免責事項:コードは、これは、クラスの中にスコープの定数の議論からですruby koansルビー:クラス定義の明示的なスコープ
から取られました。ここでカップルいくつかのクラスのdefintionです:
class Animal
LEGS = 4
def legs_in_animal
LEGS
end
end
class MyAnimals
LEGS = 2
class Bird < Animal
def legs_in_bird
LEGS
end
end
end
2でMyAnimals::Bird.new.legs_in_bird
結果をしているこの時点では、私は理由を理解 - 継承階層構造の前に定数の字句スペースを検索します。
次に、このクラスが定義されています
class MyAnimals::Oyster < Animal
def legs_in_oyster
LEGS
end
end
チュートリアルでは、今4でMyAnimals::Oyster.new.legs_in_oyster
結果を呼び出すことを言うと、私はそれを把握することはできません。オイスターはMyAnimalsのネストされたクラスなので、私はそれがBirdsクラスと同じ方法で動作することを期待していました。明示的なスコープでクラスオイスターを宣言することに関する重要な情報が欠落しています。
誰でもこのことを私に説明できますか?私はGoogleを介して何百ものルビークラスのチュートリアルを見つけましたが、どれもこの状況に対処していません。それがある -
あなたはMyAnimalsクラス定義オイスターINSIDEを定義した場合、あなたはlegs_in_oysterは、あなたが別途オイスターを定義した場合2.
あるという答えを得る...事前に
最初にどの定数に達するかに依存するコードを書く人はいますか? –