scala – 为什么确保只有其他工作?
发布时间:2020-12-16 18:59:44 所属栏目:安全 来源:网络整理
导读:在 scala中,当我使用确保predef时,它只适用于if-else表达式的else部分: def evenIt(x:Int) = { if(x % 2 == 0) x+1 //return odd on purpose! else{ x + 1 } ensuring( _ % 2 == 0)}//Test it:evenIt(3) 4evenIt(4) 5 //--- ensuring does not catch this!
在
scala中,当我使用确保predef时,它只适用于if-else表达式的else部分:
def evenIt(x:Int) = { if(x % 2 == 0) x+1 //return odd on purpose! else{ x + 1 } ensuring( _ % 2 == 0) } //Test it: evenIt(3) > 4 evenIt(4) > 5 //<--- ensuring does not catch this! 但是我认为“if-else”是scala中的表达.那么它应该只是返回一个值 – 反过来应该传递给确保? 还是我在这里混乱?谢谢. 编辑:在Scala的“编程”一书中,作者使用如下: private def widen(x: Int) : Element = if(w <= width) this else { val left = elem(' ',(w - width) / 2,height) var right = elem(' ',w - width - left.width,height) left beside this beside right } ensuring ( w <= _.width 他只适用于其他部分吗? 解决方法
是的,if-else是一个表达式,但是用括号括起来的方式,你只应用确保x 1,而不是if-expression.如果你把确定放在围绕if的关闭括号之后,它会做你想要的:
def evenIt(x:Int) = { if(x % 2 == 0) x + 1 //return odd on purpose! else x + 1 } ensuring( _ % 2 == 0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |