scala – If语句作用域变量
发布时间:2020-12-16 09:02:50 所属栏目:安全 来源:网络整理
导读:我经常希望创建作用于if语句的变量.有些计算只涉及特定的“if”语句 – 用临时变量污染外部范围会产生不良影响. 我想做什么: val data = (whatever)if (val x = data*2+5.4345/2.45; val y = data/128.4; x*y 10) x * yelse x * 2println(x) //ERROR! 一种
我经常希望创建作用于if语句的变量.有些计算只涉及特定的“if”语句 – 用临时变量污染外部范围会产生不良影响.
我想做什么: val data = (whatever) if (val x = data*2+5.4345/2.45; val y = data/128.4; x*y < 10) x * y else x * 2 println(x) //ERROR! 一种选择是相当混乱: val data = (whatever) if (data*2+5.4345/2.45*data/128.4 < 10) data*2+5.4345/2.45*data/128.4 else data*2+5.4345/2.45 * 2 我试图避免的明显替代方案: val data = (whatever) val x = data*2+5.4345/2.45 val y = data/128.4 if (x*y < 10) x*y else x * 2 println(x) //OK 在Scala中这样的事情可能吗?有一个体面的解决方法吗?如果没有,其他语言支持这样的想法? 解决方法
因为如果在Scala中是一个表达式,即它返回一个值,通常你会为if表达式的结果设置一些值.所以你的第三种选择就好了:把它放在一个代码块中,即
val data = (whatever) val myValue = { val x = data*2+5.4345/2.45 val y = data/128.4 if (x*y < 10) x*y else x * 2 } 块内声明的val都不在其外部. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |