简短的例子。
def yay(a, b = "1")
value = a + b
return value
end
我希望能够做到这一点
something.yay(2)
并返回3,并执行此操作
something.yay(2,3)
并获得5。
提前致谢!
答案 0 :(得分:2)
你已经拥有它,我认为唯一的问题是数据类型。
尝试:
def yay(a, b = 1)
a + b
end
或者,如果此方法仅对整数类型进行操作,则可以使用to_i
将两个参数转换为整数:
def yay(a, b = "1")
a.to_i + b.to_i
end
答案 1 :(得分:1)
使用Fixnum
文字,而不是字符串文字:
class Something
def yay(a, b = 1) # <----
a + b # You don't need `return`: the last value evaluated is returned.
end
end
something = Something.new
something.yay(2)
# => 3
something.yay(2, 3)
# => 5
答案 2 :(得分:0)
我发现以下用于此类的一般用途:
def foo(*a)
## define default vals
params = {'param1_name' => 'def_val_1','param2_name' =>
'def_val_2','param3_name' => 'def_val_3'}
params.each_with_index do |(key_,val_), ind_|
params[key_] = ( a.first[ind_].nil? ? val_ : a.first[ind_])
puts params[key_]
end
end
foo (['path' ,nil, 'path3' ])
=>
path
def_val_2
path3