0

この質問は非常に具体的に思えるかもしれませんが、いくつかのスクリプトを更新して Ruby 1.9 で実行しようとしており、この非常によく似たエラーに何度も遭遇しました。ここでこのコードを実行しようとしています: http://x.gfax.ch/Archives/Scripts/boggle.rbしかし、行き詰まります:

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

ruby1.8 では、これはランダムな NxN ボグル ボードを生成し、その中で見つけられるすべての単語を見つけて出力します。しかし、ruby1.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 に答える