2
def [](index)
  case index
  when 0, -2: @x
  when 1, -1: @y
  when :x, "x": @x
  when :y, "y": @y
  else nil
  end
end


array.rb:3: syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '\n'
  when 0, -2: @x
             ^
array.rb:5: syntax error, unexpected ':', expecting keyword_end
  when :x, "x": @x
               ^
array.rb:6: syntax error, unexpected ':', expecting keyword_end
  when :y, "y": @y
               ^
array.rb:8: warning: else without rescue is useless
array.rb:9: syntax error, unexpected keyword_end, expecting $end

我是按照《Ruby 编程语言》这本书的原样写的。

我的 ruby​​ 版本是 ruby​​ 1.9.3p0

有没有人见过这个?

4

2 回答 2

5

我建议您使用常规 case..when..then 形式

def [](index)   
  case index   
    when 0, -2 then @x   
    when 1, -1 then @y   
    when :x, "x" then @x   
    when :y, "y" then @y   
  end 
end 
于 2012-05-12T05:47:46.393 回答
2

尝试 ”;” 或换行符而不是“:”。

case index
  when 0, -2; @x

case index
  when 0, -2
    @x
于 2012-05-12T05:46:29.843 回答