0

我知道这个问题可能看起来非常具体,但我正在尝试更新一些脚本以在 ruby​​ 1.9 上运行并且不止一次遇到这个非常相似的错误。我正在尝试在这里运行此代码:http: //x.gfax.ch/Archives/Scripts/boggle.rb但陷入:

def Dict.to_n(ch)
    ch[0]-'a'[0]
end

在 ruby​​1.8 中,这会生成一个随机的 NxN boggle board,然后查找并输出它可以在其中找到的所有单词。然而,在 ruby​​1.9 中,解释器给了我这样的信息:

boggle.rb:182:in `to_n': undefined method `-' for "a":String (NoMethodError)

我的语法有什么问题?(如果您需要一个字典文件来使用脚本,我正在使用本示例页面底部给出的一个:http: //learnruby.com/boggle/index.shtml)提前感谢您的任何指导.

4

2 回答 2

1

在 Ruby 1.9 中,该方法String#[]返回一个字符串,而在 Ruby 1.8 中,它返回一个数值。(参见此处)您可以考虑String#chars改用。

于 2012-05-23T21:34:36.480 回答
0

您可能想尝试这样的事情:

  def Dict.to_n(ch)
    if ch.respond_to? :codepoints #1.9+
      ch.codepoints.first - 'a'.codepoints.first
    else
      ch[0]-'a'[0]
    end
  end
于 2012-05-24T01:27:30.727 回答