-1
のオプションのシーケンスは、ここではいくつかのデータです:スカラ:引数
val data = List(1,1,2,2,3)
私は次のことをサポートしている機能filteredSum
を書きたいと思います:
/*1*/ filteredSum(data) // Outputs 0
/*2*/ filteredSum(data, 1) // Outputs 1 + 1 = 2
/*3*/ filteredSum(data, 1, 3) // Outputs 1 + 1 + 3 = 5
/*4*/ filteredSum(data, None) // Outputs 1 + 1 + 2 + 2 + 3 = 9
カップル近いミスがあります。
def filteredSum(data: Seq[Int], filterValues: Int*): Int = {
data.intersect(filterValues).sum
}
とオプションあなたの第四を与える:
def filteredSum(data: Seq[Int], filterValues: Option[Seq[Int]]) : Int = {
if(filterValues.nonempty) data.intersect(filterValues.get).sum
else data.sum
}
しかし、この実装で最初の3つの呼び出しがたくさんclunkier見て:filteredSum(data, Some(Seq(1)))
、例えば。例えば*
表記は最初の3つの呼び出しをサポートしています
他のアイデアはありますか? (もちろん、私の実際のユースケースは、はるかに複雑ちょうど一緒にいくつかの数字を追加するよりも、私はあまりにも密接にintersect
またはsum
機能に関連付けられている答えを探していないよ。)
これは馬鹿に聞こえますが、これを行うことができないことを忘れていました。あまりにも多くのPython ... –