class Test
def << (*args)
print "I got #{args.size} parameters.\n"
end
end
这有效:
t = Test.new
t << 5
这不起作用:
t = Test.new
t << 5,10
但这可行:
t = Test.new
t.<< 5,10
为什么第二种情况不起作用?它不应该等同于第三种情况吗?
答案 0 :(得分:4)
它有效: -
class Test
def << (*args)
print "I got #{args.size} parameters.\n"
end
end
t = Test.new
t << [5,10]
# >> I got 1 parameters.
t << (5..10)
# >> I got 1 parameters.
为什么第二种情况不起作用?
您必须以数组格式传递它(意味着您只需传递一个对象作为参数)。由于operator precedence
,您的第二个无效。<<
的优先级高于,
。因此,您的表达式t << 5,10
变为(t << 5),10
。这就是你得到错误的原因。