次のように、「let」で相互にバインドしたい引数の数が不明な場合。
let [a "hello" b 55 ]
関数/マクロなどの内部でletをバインドし、リストをループしたい場合、これをどのように行いますか?
レットには4つの要素がありますが、「キー」をループするだけであることに注意してください。使用例として、キーにバインドされた値がbのような数値(55)であるかどうかを確認する場合があります。
編集:例として:この以下は非常に壊れているが、単に問題を説明することを目的としていることに注意してください。
(defn func [& arguments]
(let [ ~arguments] ((println "omg no way!") (for [x let-list] (number? x (println "roar") )))
入力:(func [a "hello" b 55]
つまり、基本的には、次のような関数が必要です。
- 引数を次のようなリストの形式にバインドします:[ab]
- prints "omg no way!")-ループの一部であってはならず、関数内で1回だけ出力する必要があります
- 「let-list」をループするforループのようなループのようなもので、次のようになります。「a、数字ですか?いいえ、b数字ですか?はい、「roar」を出力します
出力:omg no way roar
もう一度: 関数内のlet内のキーワードにアクセスする方法があるかどうか疑問に思っています。forループが示すように、個々の要素にアクセスして、その要素を使って処理を実行したいと思います。私が([x引数]の代わりに]を使用した場合、次のようになります:omg no way、roar roar(bは55に関連付けられているため、数値ですが、55も数値ですが、55は55であるため、55を使用する必要はありません。すでにb)に関連付けられています