問題タブ [pseudo-globals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - Ruby のグローバル文字列 ($& など) がミューテーションを無視してもエラーが発生しないのはなぜですか?
私はRuby(2.0)を学んでいますが、これは私を驚かせました:
このslice!
メソッドは、文字列を変更することになっています。他のミューテーター メソッドも同じように動作します。私の質問: なぜこれがエラーをスローしないのですか。これはどこかに文書化されていますか?根拠はありますか?
アップデート
$&
つまり、グローバル変数のように機能していないことがわかります。それへの各参照は、あたかも本当に引数のない関数であるかのように、新しいオブジェクトを与えます:
だから...私の質問は次のようになります:これは単にインタープリターからの「魔法」ですか、それとも$&
実際にはRubyで定義できるのと同じように引数のない関数def ... end
ですか? そして、どうすれば違いを見分けることができますか?Python では、foo
名前を使用するだけで関数を参照できます。
Rubyでこれを行う方法はありますか? 次に、 $& が「本当に」何であるかを確認できます (魔法ではない場合)。
ruby - メソッド定義内で $1、$2 などのグローバル変数を使用する
次の 2 つのコードがあるとします。
これら 2 つのコードの出力が異なるのはなぜですか? ブロックがメソッド定義内で指定された場合と同じ方法で変数が評価されるようgsub
に、メソッド定義の外からブロックを渡す方法はありますか?$1
$2
ruby - File::SEPARATOR をオーバーライドする方法
File.join
次の州の文書:
join(string, ...)
→string
を使用して文字列を結合して形成された新しい文字列を返します
File::SEPARATOR
。
File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"
ただし、以下の結果は異なる動作を示しています。
誰が何が起こっているのか説明できますか? File::SEPARATOR
別の値に設定してこの動作をオーバーライドする方法はありますか?
これには特定のユースケースはありませんし、回避策を探しているわけでもありません..ただ興味があります。前もって感謝します。