今のところ、1つの要素で構成されるIterable
を渡す必要があるときは、Some
の値を渡します。暗黙の変換が必要です。Scalaで単一要素の繰り返し可能性を表現するのに、最も慣れ親しんだ方法は何ですか?
Javaでは、私はjava.util.Collections.singleton
を使用していました。このユースケースによく似たScalaに相当するものがあります。あなたがSeq(x)
を書く単一要素のSeq
を取得するだけのよう
今のところ、1つの要素で構成されるIterable
を渡す必要があるときは、Some
の値を渡します。暗黙の変換が必要です。Scalaで単一要素の繰り返し可能性を表現するのに、最も慣れ親しんだ方法は何ですか?
Javaでは、私はjava.util.Collections.singleton
を使用していました。このユースケースによく似たScalaに相当するものがあります。あなたがSeq(x)
を書く単一要素のSeq
を取得するだけのよう
Iterable(x)
、List(x)
など
コレクション(Iterable
、Seq
のapply
方法(コンストラクタ)の実装に表情をとった後、 List
)は、オブジェクトに配列を追加してラッピングし、それをループしたり別のメソッドを呼び出す必要があるvarargsを取ります。
だから私はに従うつもりだと思いますx :: Nil
のようなオブジェクト;これを実現する最も軽量な方法のように見えますが、コレクションを作成していることは明白です。
varargsのラッピングは、 。 IMHO、あなたは言葉機械を推測することはできません。 'f(x:X)'を 'f(xs:Iterable [X])'に追加できない場合は、暗黙のラッパーかもしれません。これは余分なラッパーと余分な構文を避けます。たぶんあなたは暗黙的に適切に範囲を設定できます。 –
おそらくGenericCompanionは、他のAPIと同様に、1つの要素を取るapplyと2つ以上を取るもう1つの要素を持つ必要があります。 –
だから、ぎこちなさの答えは、私たちがすでに知っていた過負荷は悪いことです。 –
'Option [T]'は暗黙の変換(例えば '.toList')なしで反復可能にすることができます。 'List(single) 'を使っても何も問題はありません。 – cchantep
私はこれを数十億回実行しているので、最も軽量な実装を使用するのは苦にならないと思っていました。(私の気持ちはJITがおそらく簡単にインライン化できるということですが) – fortran