我自学斯卡拉(从多年的Java的未来),我穿过下面的代码,我不能完全神交传来:理解类型的高阶函数在斯卡拉
case class Email(subject: String, text: String, sender: String, recipient: String)
type EmailFilter = Email => Boolean
def newMailsForUser(mails: Seq[Email], f: EmailFilter) = mails.filter(f)
val sentByOneOf: Set[String] => EmailFilter =
senders => email => senders.contains(email.sender)
val notSentByAnyOf: Set[String] => EmailFilter =
senders => email => !senders.contains(email.sender)
val minimumSize: Int => EmailFilter = n => email => email.text.size >= n
val maximumSize: Int => EmailFilter = n => email => email.text.size <= n
我找了份很难理解与缺少类型定义的丘壑:
val sentByOneOf: Set[String] => EmailFilter =
senders => email => senders.contains(email.sender)
我创建使用def
相同的功能,这我能理解:
def sentByOne(senders: Set[String], email: Email): (Set[String] => EmailFilter) = {
senders => email => senders.contains(email.sender)
}
这个类型来自哪个版本?另外,后一版本是否可取?
哪里类型'senders'和'email'? – 2014-08-29 06:24:03