私の意図は単純です: ユーザー オブジェクトのリストから emaild のカンマ区切りの値を取得することです。Java で for ループと if else 条件を使用してこれを行いました。
Scalaでやりたいのでやってみました。
case class User(name: String, email: String)
val userList = List(User("aaa", "aaa@aaa.com"),
User("bbb", "bbb@bbb.com"),
User("ccc", "ccc@ccc.com"))
今
val mailIds = userList.foldLeft(""){(a: String, b: User) => ( b.email+","+a) }
与える
ccc@ccc.com,bbb@bbb.com,aaa@aaa.com,
(最後のコンマに注意してください。)
と
val mailids = userList.map(x => x.email).reduceLeft(_+","+_)
与える
aaa@aaa.com,bbb@bbb.com,ccc@ccc.com
私はreduceLeft
このようにだけ使ってみました
val emailids = userList.reduceLeft((emails: String, user: User) => emails+", "+user.email)
しかし、それはコンパイルエラーをスローします
type mismatch; found : (String, User) => java.lang.String required: (java.io.Serializable, User) => java.io.Serializable
では、上記の場合になしで使用するより良い方法はありますか?reduceLeft
map