がこの-EXP Sで:リバインディングは好ましくないですか?考える
(let [temp 30
temp (* temp 9/5)
temp (+ temp 32)]
temp)
は算術インライン化することができたという事実を無視して、このようなtemp
はClojureの中に不快なことが再バインドするのでしょうか?なぜ/なぜか?
がこの-EXP Sで:リバインディングは好ましくないですか?考える
(let [temp 30
temp (* temp 9/5)
temp (+ temp 32)]
temp)
は算術インライン化することができたという事実を無視して、このようなtemp
はClojureの中に不快なことが再バインドするのでしょうか?なぜ/なぜか?
これは、例のための条件付きスレッディングマクロの定義でcore.cljで使用されます。価値の構成をセグメントに分割して人間の消費を明確にするなら、私はこれがこのパターンをうまく利用していると確信しています。
多くのClojurianは、「rebinding」という単語をbind
関数の使用を意味すると解釈することは重要です。あなたはそれを正確に使用していますが、別の意味もあります。
これはあまり機能しません。let
では、すべての変数は何かを意味するはずです。
(let [celsius 30
fahrenheit-unnormalized (* celsius 9/5)
fahrenheit (+ fahrenheit 32)
fahrenheit)
(私はよりよい解決策を無視しています:)
(+ (* temp 9/5) 32)
let
内の再結合は、多くの場合、スレッドのマクロのいずれかで表すことができる
:私はこれにそれをリファクタリングします。次の式では、質問からの式と同等です。
この特定の表現は明らかに簡素化することができる(-> 30 (* 9/5) (+ 32))
さらにしばしば->
または->>
ストライキによるシンボル(再バインド)とによるunreadabilityの再利用にunreadabilityとの間に良好なスポット
私はスレッディングマクロを認識していますが、実際には[nice library](https://github.com/rplevy/swiss-矢印)、そのアイディアをさらに進歩させます。 let-localバインディングを再バインドすると、(おそらく微妙な)バグが発生する可能性があるのか、これらの2つのオプションから自由に選択できるのかという疑問がありました。時には、私はlet-formがTBHを読むのがはるかに素敵であることが分かります。 – jjpe