我似乎并不了解Map和FlatMap。 我不明白的是,理解是一个嵌套调用map和flatMap的序列。 以下示例来自Scala中的函数式编程 def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = for { f <- mkMatcher(pat) g <- mkMatcher(pat2) } yield f(s) && g(s) 翻译成 def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = mkMatcher(pat) flatMap (f => mkMatcher(pat2) map (g => f(s) && g(s))) mkMatcher方法定义如下: def mkMatcher(pat:String):Option[String => Boolean] = pattern(pat) map (p => (s:String) => p.matcher(s).matches) 模式方法如下: import java.util.regex._ def pattern(s:String):Option[Pattern] = try { […]
我无法理解Scala中的Option[T]类。 我的意思是,我无法看到任何超过null 。 例如,考虑下面的代码: object Main{ class Person(name: String, var age: int){ def display = println(name+" "+age) } def getPerson1: Person = { // returns a Person instance or null } def getPerson2: Option[Person] = { // returns either Some[Person] or None } def main(argv: Array[String]): Unit = { val p = getPerson1 if (p!=null) […]