斯卡拉 – 模式匹配匿名
发布时间:2020-12-16 09:07:22 所属栏目:安全 来源:网络整理
导读:我正在尝试做类似的事情: private val isOne = (x: Int) = x == 1private val isTwo = (x: int) = x == 2def main(x: Int): String = { x match { case isOne = "it's one!" case isTwo = "it's two!" case _ = ":( It's not one or two" }} 不幸的是……看
我正在尝试做类似的事情:
private val isOne = (x: Int) => x == 1 private val isTwo = (x: int) => x == 2 def main(x: Int): String = { x match { case isOne => "it's one!" case isTwo => "it's two!" case _ => ":( It's not one or two" } } 不幸的是……看起来我的语法不对,或者在Scala中这是不可能的……任何建议? 解决方法
由于两个原因,这不起作用.第一,
case isOne => ... 不是你想的那样.匹配中的isOne只是一个热切匹配任何东西的符号,而不是对val isOne的引用.您可以使用反引号来解决此问题. case `isOne` => ... 但这仍然不会做你认为它做的事情. x是Int,isOne是Int =>布尔值,这意味着它们永远不会匹配.你可以像这样解决它: def main(x: Int): String = { x match { case x if(isOne(x)) => "it's one!" case x if(isTwo(x)) => "it's two!" case _ => ":( It's not one or two" } } 但这不是很有用,案例1 => ….工作做得很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |