関数引数と同じ意味を持つローカル変数の規約は何ですか?私は関数の引数の初期状態値として持つ(したがって同じ意味を持っている)ローカル変数必要がある場合は関数引数と同じ意味を持つローカル変数の規約は何ですか?
、私はそれをどのように呼び出す必要がありますか?
人工例(つまり、しかし、Clojureの中に非常に人気の建設を示しています)として:
(defn sum [coll]
(loop [local-coll coll, result 0]
(if (empty? local-coll)
result
(recur (rest local-coll) (+ (first local-coll) result)))))
ここ
local-coll
が最初coll
の値に初期化され、そしてそれはまた、ループ中にこの意味を保持しています。 local-coll
は間違いなく良い名前ですが、何ですか?
ハスケルでは、変数/関数名の最後に引用符('
)を入れると良いスタイルです。 var'
。 Common Lispでは時々、アスタリスクで終わる名前が見えました(*
)。 Clojureは関数と同じ表記法を持ちますが、別の関数の意味は同じですが、意味が少し異なります(例えばlist*)。しかし、この表記法は、このタイプの項目がいくつかあることを示すためにdocstringで頻繁に使用されます(例:(methodname [args*] body)*
または(try expr* catch-clause* finally-clause?)
)ので、ローカルのvar名に使用すると混乱する可能性があります。 Java interopは、defn-
のようなものも提供します。名前はハイフン(-
)で終わり、生成されたクラスのプライベートメソッドを示します。だから、ローカル変数(関数のプライベート変数)にもハイフンを使うのは意味があります(私にとってはちょっと変わったようですが)。
したがって、関数の引数と同じ意味でローカル変数に名前を付けるとき、どうすればよいですか?