作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 even()
时,它是否只匹配 unapply
中的真实条件以及在使用 even
时,这是如何做到的仍然打印 "Is even"
object even{
def unapply(arg: Int): Boolean = (arg%2 == 0)
}
object singleDigit{
def unapply(arg: Int): Option[Boolean] = {
if(arg < 10) Some(true)
else None
}
}
val n = 9
n match {
case even() => println("Is even")
case singleDigit => println("is single")
case _ => println("No property")
}
//This gives "is single"
n match {
case even => println("Is even")
case singleDigit => println("is single")
case _ => println("No property")
}
//This gives "Is even"
偶数情况如何满足 n=9 作为奇数?这个模式匹配中的 even 和 even() 有什么区别?
最佳答案
case even =>
实际上是一个变量 模式,并不像编译器警告所暗示的那样引用 even.unapply
Warning:(19, 9) patterns after a variable pattern cannot match (SLS 8.1.1)
If you intended to match against object even in class A$A3, you must use backticks, like: case `even` =>
case even => println("Is even")
^
你只是碰巧给了它相同的名字,但你可以这样写
n match {
case foo => println("Is even")
...
}
它仍然会打印出 Is even
因为可变模式在第一个位置。
关于scala - 带括号和不带模式匹配的单例对象的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58473594/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!