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 に答える