【发布时间】:2017-08-06 12:51:06
【问题描述】:
我在尝试使用 double splat 扩展哈希变量时遇到了这种奇怪的行为。不知道为什么会这样。
我的红宝石版本
ruby 2.2.6p396 (2016-11-15 revision 56800)
场景
class MyClass
def my_method; end
end
MyClass.new.my_method(*[]) # returns nil
MyClass.new.my_method(**{}) # returns nil
MyClass.new.my_method(*[], **{}) # returns nil
# Using variables
values = []
k_values = {}
MyClass.new.my_method(*values) # returns nil
MyClass.new.my_method(**k_values) # *** ArgumentError Exception: Wrong number of arguments. Expected 0, got 1.
MyClass.new.my_method(*values, **k_values) # *** ArgumentError Exception: Wrong number of arguments. Expected 0, got 1.
# In summary
MyClass.new.my_method(**{}) # returns nil
MyClass.new.my_method(**k_values) # *** ArgumentError Exception: Wrong number of arguments. Expected 0, got 1.
有人知道为什么会这样吗?这是一个错误吗?
【问题讨论】:
-
my_method代码? -
算了,我忘了!正在更新中...
标签: ruby splat double-splat