我自學斯卡拉(從多年的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