在ruby 1.8.7中我注意到了
def some_method(arg1,arg2='default',arg3,arg4)
将返回
syntax error, unexpected ',', expecting '='
它在Ruby 1.9中运行良好
但是,这适用于Ruby 1.8.7:
def some_method(arg1,arg2='default',arg3='default',arg4='default')
这是正常的,还是我在这里做错了什么?
答案 0 :(得分:4)
Ruby 1.8.7仅支持参数列表末尾的可选参数。
# works in all versions of ruby
def foo(a, b=2)
puts "a:#{a} b:#{b}"
end
foo(1) # a:1 b:2
foo(2, 3) # a:2 b:3
然而,ruby 1.9+支持任何位置的可选参数。
# works only in ruby 1.9+
def foo(a=1, b)
puts "a:#{a} b:#{b}"
end
foo(5) # a:1 b:5
foo(5, 6) # a:5 b:6
你做得对。在必需参数之前的可选参数是ruby 1.9中引入的语言特性,在ruby 1.8.x版本中不可用。