リスト内の値を合計する汎用関数が必要です。数値のスカラ和のリスト
次のコードはコンパイルされません:
def sum[T : Numeric](x: List[T]): T = {
if(x.isEmpty) 0
else x.head + sum(x.tail)
}
をコンパイルエラーがある:
error: type mismatch;
[INFO] found : Int(0)
[INFO] required: T
[INFO] if(x.isEmpty) 0
:)合計値ITALさもなければ
fold
操作を使用インスタンスが定義されていますか? –私はオンラインでコードスニップに遭遇し、どのようにしてより一般的にすることができるのか不思議でした。スカラを理解するためのエクササイズです(私は学校にいない、ちょっと好奇心が強いです) – Jake
ところで、このタイプの関数に気をつけなければならないことの1つは、_tail recursive_ではありません。あなたが非常に長いリストを持っているなら、_stackオーバーフロー_を得ることができます。 (ここで、前にその式を聞いたことがありますか?)関数をテール再帰的にするには、再帰呼び出しを最後の式にする必要があります。 –