7
なぜルビメソッドはレキシカルスコープを持っていないのですか?例えば
def test
a = "a is for apple"
def inner_method
a = "something" # this will refer to a different "a"
end
inner_method
puts a
end
は、このためにどんな理由がありますか?ブロックにはレキシカルスコープがあるので、なぜメソッドを使わないのですか?これは修正される予定ですか?
他にすべてのレキシカルスコープがある場合はちょうど外れているようです。 –
「その他すべて」?ブロックを除いて、* nothing *はレキシカルスコープを持ちます。メソッド本体ではありません。クラスボディではありません。モジュール本体ではありません。スクリプト本体ではありません。 *ブロック*は、「不自由な」ものです。 –
Scalaのメソッドはファーストクラスのオブジェクトではありませんが、内部のメソッドは周囲のメソッドの環境に近いものです。なぜなら、「内部メソッド」はその外部メソッドで閉じるのではなく、もっと簡単な理由があります。*内部メソッドではないからです。これはグローバルメソッドの定義です。 –