実際には、letfnとローカル関数を定義するために使うべきですか? ローカル関数とローカル非関数の両方が必要な場合はどうですか?clojureでローカル関数を定義するためのvs letfnを使用できますか?
35
A
答えて
37
私が必要とするのは、ローカル機能または2 ...または3 ...私はそれらをletfnします。関数と非関数を混在させる必要がある場合は、通常のletを使用します。 letfningとlettingはこれを行うための非常に冗長な方法です。
ただし、ローカル関数を使って相互再帰が必要な場合は、どちらかの方法でletfnを実行する必要があります。
短いバージョン:見た目がよく見えるときや便利なときに使用します。いずれかを使用するための厳密で速い規則はありません。それらはClojureツールボックスの単なるツールです。
楽しくお楽しみください!
18
通常、それはlet
を使いやすくし、すっきりです:あなたは、単一の形で両方の機能と非機能のセットを定義し、さらに以前の定義に戻って参照することができ、そのよう:
(let [f (fn [x] ....)
value (reduce f some-collection)
foo bar]
.....)
letfn
は本当にありますあなたがお互いを再帰的に参照する複数の関数を定義したいときにのみ必要です。 let
は再帰参照をサポートしていないため、この場合は機能しません。
関連する問題
- 1. グローバルvsユーザー定義関数内のローカル
- 2. Clojure組み込み関数の関数定義:def vs defn
- 3. スカラ関数変数:デフォルト値を使用する(関数定義または変数定義で定義する)
- 4. ローカルで定義された関数をリモートで実行する
- 5. Clojureで引数を検証するために関数またはマクロを使うべきですか?
- 6. 約定のための解決関数を定義できますか?
- 7. ローカル関数定義が不正です
- 8. Clojureでローカル依存関係を使用するには?
- 9. Googleスプレッドシートの式でローカル値(または変数)を定義できますか?
- 10. リモートでPowerShellのInvoke-Commandを使用するときに、ローカルで定義された関数を含めるにはどうすればよいですか?
- 11. PHP関数内でローカル定数を定義することはできますか?
- 12. Clojureの書式関数で丸めモードを設定する
- 13. ローカルで使用するためのjquery連鎖関数の書き方は?
- 14. 内部関数は、親関数で定義された変数を使用できますか?
- 15. Rubyのdef関数でローカル変数を定義できません
- 16. JavascriptでConstructor.prototypeのローカル関数を定義する方法
- 17. Clojureのfnで未定義シンボルを使用するにはどうすればよいですか? Clojureので
- 18. Clojureでは、無名関数内で無名関数を定義することは可能ですか?
- 19. グローバル要素定義をローカル要素定義で上書きできますか?
- 20. 外部で定義されたスコアリング関数を使用してグリッド検索を使用できますか?
- 21. Clojure関数をJava 8のLambdasとして使用できますか?
- 22. PHPでローカル関数を定義するには?
- 23. 角度チャートを使用するときにデータポイントの色を関数で定義できますか? C3ライブラリで
- 24. スクリプト内でローカル変数またはメソッドを定義する
- 25. 'virtual inline'を使用してC++関数を定義できますか?
- 26. ユーザ定義関数を持つ辞書を使用できますか?
- 27. 関数の引数をローカル変数として定義する
- 28. あらかじめ定義された関数を使用するとコールバック
- 29. アクセスVBA - ユーザー定義関数を使用できません
- 30. 関数の定義をbashで表示できますか?
単純な再帰(本体が使用する関数)であっても、letfnが必要であることに注意してください。 – fmjrey
関数はこのようにして自身を参照できます。 '(fn foo [x] ....(foo ...)...)' – mikera
はい、本当に! let形式では、同じfn(letバインディングでは1つの名前、fn形式では1つの名前)または同じ名前を2回繰り返すので、letfnはより良いかもしれません。 – fmjrey