我的意图很简单:从用户对象列表中获取电子邮件的逗号分隔值。我在 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