一連の文字を返す関数があるので、一部の文字(すべてではない)にメタデータを添付できるように変更する必要があります。Clojureは、プリミティブ型の「with-meta」をサポートしていません。したがって、可能なオプションは次のとおりです。
- [文字、メタデータ]のベクトルのシーケンスを返します。
長所:シンプルさ、データとメタデータが結びついている
短所:ベクターからデータを抽出する必要がある
- 1つは文字用でもう1つはメタデータ用の、2つの別々のシーケンスを返します。呼び出し元は、メタデータに関心がある場合、それらを同時に繰り返すことがほとんどです。
長所:呼び出し元は各ストリーム要素からデータを抽出する必要がなく、必要に応じてメタシーケンスを
破棄できます短所:両方のシーケンスを一度に繰り返す必要があり、メタデータが必要な場合は呼び出し側でより複雑になります
- 1つの文字を含み、それ自体にメタをアタッチできるレコードラッパーを導入します(ClojureレコードはIMetaを実装します)。
長所:データとメタデータが結びついている
短所:レコードからデータを抽出する必要がある
- あなたのより良いオプション。
どちらのアプローチが良いですか?