ruby - 定义自定义数组/哈希方法时出错

标签 ruby ruby-1.9

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

我是按照《The Ruby Programming Language》一书中的原著写的。

我的ruby版本是ruby 1.9.3p0

有人见过这个吗?

最佳答案

我建议你使用常规的 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 

关于ruby - 定义自定义数组/哈希方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561346/

相关文章:

ruby-on-rails - 用于操作现有 PDF 的 Ruby 库

ruby-on-rails - whois 在 IRB 中不起作用

ruby - 为什么 cucumber 钩子(Hook)方法不是小写的?

ruby - 在 ruby 中有点敲打

ruby - ruby 1.9 和 RSpec2 有什么好的突变测试工具吗?

ruby - 在 Ruby 1.9 中传递 block 时生成器抛出 "wrong number of arguments"错误

ruby - 是否存在 ruby "exception"会通过 'rescue Object' 的情况?

ruby - Ruby 程序中的文件比较

ruby-on-rails - 为什么我的 rake 调用导致 'undefined method ` source_index`' 错误?

ruby - 如何通过 ruby​​/micel 邮件删除服务器上的特定邮件?