2013-05-24 12 views

答えて

8

これは、例のための条件付きスレッディングマクロの定義でcore.cljで使用されます。価値の構成をセグメントに分割して人間の消費を明確にするなら、私はこれがこのパターンをうまく利用していると確信しています。

多くのClojurianは、「rebinding」という単語をbind関数の使用を意味すると解釈することは重要です。あなたはそれを正確に使用していますが、別の意味もあります。

3

これはあまり機能しません。letでは、すべての変数は何かを意味するはずです。

(let [celsius 30 
     fahrenheit-unnormalized (* celsius 9/5) 
     fahrenheit (+ fahrenheit 32) 
    fahrenheit) 

(私はよりよい解決策を無視しています:)

(+ (* temp 9/5) 32) 
let内の再結合は、多くの場合、スレッドのマクロのいずれかで表すことができる
2

:私はこれにそれをリファクタリングします。次の式では、質問からの式と同等です。

この特定の表現は明らかに簡素化することができる
(-> 30 (* 9/5) (+ 32)) 

さらにしばしば->または->>ストライキによるシンボル(再バインド)とによるunreadabilityの再利用にunreadabilityとの間に良好なスポット

+0

私はスレッディングマクロを認識していますが、実際には[nice library](https://github.com/rplevy/swiss-矢印)、そのアイディアをさらに進歩させます。 let-localバインディングを再バインドすると、(おそらく微妙な)バグが発生する可能性があるのか​​、これらの2つのオプションから自由に選択できるのかという疑問がありました。時には、私はlet-formがTBHを読むのがはるかに素敵であることが分かります。 – jjpe

関連する問題