なぜ1行目と2作品、の要素が、3がに失敗¿:?変数機能:合計一覧
val sum1= (a: Int, b: Int, c: Int) => a + b + c //OK
List(1,2,3).reduceLeft(_+_) //OK
val sum2 =(x: List) =>x.reduceLeft(_+_) //Fail
なぜ1行目と2作品、の要素が、3がに失敗¿:?変数機能:合計一覧
val sum1= (a: Int, b: Int, c: Int) => a + b + c //OK
List(1,2,3).reduceLeft(_+_) //OK
val sum2 =(x: List) =>x.reduceLeft(_+_) //Fail
あなたはx: List
に要素タイプを追加する必要があり、それがList[Int]
またはList[Double]
になります。 List
自体はraw type
です。これはScalaでは不正です。型アノテーションがなければ、コンパイラは+
演算子がreduceLeft(_+_)
の部分で何を意味するのかも知らないため、エラーが発生します。
List
の内側にあるオブジェクトが+
演算子を定義する型であることを示すコンパイラには不足しています。基礎となるScalaライブラリを使用して任意の数値型のListを追加できるメソッドを定義するうえで便利な方法です。
Scalaではすでにsum
が定義されているため、この場合でもreduce
は必要ありません。 List
はより高度な種別のコンストラクターです。詳細はhereです。
def addList[T : Numeric](list: List[T]): T = list.sum
あなたは、x 'に要素タイプを追加する必要があります:それは'一覧[INT]や ''一覧[ダブル] 'またはものは何でもあなたが必要となるように、List'。 – Clashsoft
**はい**、ありがとうございます –