Option monad 是如何工作的?我正在浏览scala api并且有一个示例(我的意思是第二个),
由于 for comprehension 的工作原理,如果从 request.getParameter 返回 None,则整个表达式的结果为 None
但是当我尝试这段代码时:
val upper = for {
name <- None //request.getParameter("name")
trimmed <- Some(name.trim)
upper <- Some(trimmed.toUpperCase) if trimmed.length != 0
} yield upper
println(upper.getOrElse(""))
我得到一个编译错误。这应该如何工作?