0

在 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')

这是正常的,还是我在这里做错了什么?

4

1 回答 1

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 版本中不可用。

于 2013-06-14T21:36:38.410 回答