0

単純な Ruby クラスを作成しようとしていますが、行き詰まっています。これは私のコードです:

#!/usr/bin/ruby
class Dock

 @ships = Hash.new(false) 

 def initialize()
 end

 def store(ship, pier)
    @ships[pier] = ship
 end

end

yathi = Dock.new
yathi.store("test", 12)

しかし、ターミナルでこれを実行してこれを実行しようとすると:

ruby test.rb 

これは私が得ているエラーメッセージです:

test.rb:8:in `'store': undefined method `'[]=' for nil:NilClass (NoMethodError)
    from test.rb:13

次のように書き直すと機能します。

@ships = {pier => ship}

しかし、これは私が望まない値を1つだけ持つ新しいハッシュを毎回作成します。誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

3

メソッドの@ships = Hash.new(false)中に入れます。initializeメソッドの外に置くと、initialize代わりにクラスレベルのインスタンス変数を定義しています。詳しく知りたい方はこちらの記事をご覧ください。

于 2013-10-15T22:32:24.783 に答える