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
为什么第二种情况不起作用?不应该等同于第三种情况吗?
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
为什么第二种情况不起作用?不应该等同于第三种情况吗?
有用 :-
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
。这就是你得到错误的原因。