ArgumentError: wrong number of arguments in Ruby -
trying solve problem,
class person def initialize(name) @name=name end def greet(other_name) puts "hi #{other_name}, name #{name}" end end initialize("ak") greet("aks")
but getting error like:
argumenterror: wrong number of arguments calling `initialize` (1 0)
i don't understand asking here, if argument why error (1 0). can me understand problem.
look @ code:
class person attr_reader :name def initialize( name ) puts "initializing person instance #{object_id}" @name = name end def greet( name ) puts "hi #{name}, i'm #{name()}" end end
when wrote initialize
without explicit receiver:
initialize( "ak" )
it matter of luck message recognized. has responded:
method( :initialize ).owner #=> basicobject
basicobject
, foremother of object
instances, herself responded call, scolding wrong number of arguments, because:
method( :initialize ).arity #=> 0
not method not expect arguments, not expected call @ all. in fact, not expected call #initialize
on object yourself, save exceptional situations. class#new
method handles calling of person#initialize
method you:
a = person.new( 'abhinay' ) initializing person instance -605867998 #=> #<person:0xb7c66044 @name="abhinay">
person.new
handled creation of new instance , automatically called #initialize
method. also, #initialize
method created private, if did not specify explitcitly. technical term such irregular behavior magic. person#initialize
magically private:
a.initialize( 'fred' ) nomethoderror: private method `initialize' called #<person:0xb7c66044 @name="abhinay">
you cannot reinitialize 'fred', know. other methods public unless prescribed otherwise:
a.greet "arup" hi arup, i'm abhinay #=> nil
Comments
Post a Comment