ruby - Unknown argument when call a function in another function -


in module, defined 2 functions have same name different number of arguments.

module mymod  def self.dotask(name:, age:)     dotask(name: "john", age: 30, career: "teacher")  end   def self.dotask(name:, age:, career:)    puts "name:#{name}, age:#{age}, career:#{career}"  end end 

as see above, in dotask, call dotask.

in ruby file, call dotask by:

mymod.dotask(name:"kate", age: 28) 

but runtime error:

unknown keyword: career (argumenterror) 

why?

ruby not have method overloading. can not have multiple methods same name.

one solution use 3 argument version of method , add default value :career argument.

module mymod   def self.dotask(name:, age:, career: "teacher")     puts "name:#{name}, age:#{age}, career:#{career}"   end end mymod.dotask(name:"kate", age: 28) mymod.dotask(name:"kate", age: 28, career: 'teacher') mymod.dotask(name:"kate", age: 28, career: 'mechanic') 

Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -