私は初期化中にエラールビー - 初期化中に `ブロック ':未定義のメソッド` SIGN:未定義のメソッド
ブロックました':私はそれを修正することができますどのようにクラス(NoMethodError)
ミネラルのために?
require "./mineral"
.
.
.
@map[x][y] = Mineral.SIGN
私のクラス:
class Mineral
attr_accessor :x, :y, :cost, :SIGN
@@SIGN = "s"
def initialize(x, y)
@x,@y = x,y
@cost = rand 10
end
end
@@:
場合、それはではなく、クラス階層の変数の定数使用を変更しません。 SIGN' constant " - ' @@ SIGN'は決して定数ではありません。 – mudasobwa
@mudasobwa '@@ SIGN'が定数でない場合、その変数の名前をすべて大文字にするべきではありません。 Rubyでは、すべての大文字の変数は定数とみなされます。だから、私は彼が '@@ SIGN'の代わりに' @@ sign'を使うことを勧めます。 –
ルビの規則に従っている場合とそうでない場合があります。 'SIGN'は暗黙的に定数として宣言されていますが、' @ SIGN'インスタンスvarや '@@ SIGN'クラスvarや' def SIGN'メソッドもそうではありません。さらに、Rubyコアには、主に 'Kernel'で定義されたメソッドがあります。これらのメソッドには、大文字の' Integer() '、' Array() 'などの名前が付いています。 – mudasobwa