Ruby 1.8.7方法参数默认值

时间:2013-06-14 21:16:44

标签: ruby

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

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

1 个答案:

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