How to Find Class of + in Ruby -


the design philosophy of ruby amazing. did 1 + 2 , got 3. managed make this: 1.+(2) # => 3.

as cool was, wanted test out class method on + method.

+.class => syntaxerror: (irb):14: syntax error, unexpected '.'    +.class      ^ 

and then:

+().class => nomethoderror: undefined method `+@' nilclass:class 

while:

+(2).class nomethoderror: undefined method `+@' fixnum:class 

why +(2).class fixnum , not integer? try again +(2.to_i).class , same error appears +(2).class.

but key question: how find class of + method?

1 + 2 calling + method on 1 2 argument, same 1.+(2).

however, because of precedence, +(2).class calling (2).class first, returning instance of class, calling nonexistent +@ method, unary plus method exists numeric. can test typing (+(2)).class, returns fixnum 1 expect. source of error +().class, because () returns nil, , class of nil nilclass, doesn't have +@ method.

tl;dr: because precedence made leading + evaluate last, +@.

the + method on object of class method, other method on object. however, typing + calls method instead of returning it, because matz saw in dream programming language returns methods instead of calling them doesn't run. can have method returned calling method method method name, so: 1.method(:+). can make method object tell class is: 1.method(:+).class.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -