問題タブ [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.

0 投票する
3 に答える
234 参照

ruby - Ruby のグローバル文字列 ($& など) がミューテーションを無視してもエラーが発生しないのはなぜですか?

私はRuby(2.0)を学んでいますが、これは私を驚かせました:

このslice!メソッドは、文字列を変更することになっています。他のミューテーター メソッドも同じように動作します。私の質問: なぜこれがエラーをスローしないのですか。これはどこかに文書化されていますか?根拠はありますか?

アップデート

$&つまり、グローバル変数のように機能していないことがわかります。それへの各参照は、あたかも本当に引数のない関数であるかのように、新しいオブジェクトを与えます:

だから...私の質問は次のようになります:これは単にインタープリターからの「魔法」ですか、それとも$&実際にはRubyで定義できるのと同じように引数のない関数def ... endですか? そして、どうすれば違いを見分けることができますか?Python では、foo名前を使用するだけで関数を参照できます。

Rubyでこれを行う方法はありますか? 次に、 $& が「本当に」何であるかを確認できます (魔法ではない場合)。

0 投票する
4 に答える
1214 参照

ruby - メソッド定義内で $1、$2 などのグローバル変数を使用する

次の 2 つのコードがあるとします。


これら 2 つのコードの出力が異なるのはなぜですか? ブロックがメソッド定義内で指定された場合と同じ方法で変数が評価されるようgsubに、メソッド定義の外からブロックを渡す方法はありますか?$1$2

0 投票する
4 に答える
789 参照

ruby - File::SEPARATOR をオーバーライドする方法

File.join次の州の文書:

join(string, ...)string

を使用して文字列を結合して形成された新しい文字列を返しますFile::SEPARATOR

File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"

ただし、以下の結果は異なる動作を示しています。

誰が何が起こっているのか説明できますか? File::SEPARATOR別の値に設定してこの動作をオーバーライドする方法はありますか?

これには特定のユースケースはありませんし、回避策を探しているわけでもありません..ただ興味があります。前もって感謝します。