When 表达式的参数可以声明变量啦
2018-10-29 06:54
127 查看
话说,之前我们如果有下面的情况:
- [p]
val value = calcValue()
when(value){
is Int -> println("Value is $value")
else -> {
println("Value is not Int.")
}
}
when的作用域内需要用到参数表达式的求值结果时,还需要在外部声明一个参数,这样一方面影响了代码书写的流畅性,另一方面也污染了外部作用域。很早就有人在论坛上说,是不是给
when加一个
it的支持?就像下面这样,对于参数表达式,我们可以用
it来指代,这就类似于没有显示指定参数名的 Lambda 表达式一样:
when(calcValue()){
is Int -> println("Value is $it")
else -> {
println("Value is not Int.")
}
}
it已经感到害怕的 Kotlin 开发团队,并没有这样做,但他们也给出了自己的答案,在 Kotlin 1.3 当中大家可以在参数处声明变量:
when(val value = calcValue()){
is Int -> println("Value is $value")
else -> {
println("Value is not Int.")
}
}
value只能在
when作用域内使用,代码编写流畅性嘛倒也还好。1.3 应该用不了几天就要发布了,上周的时候 rc-190 号称是最后一个“提意见的机会”,看来估计 Kotlin SAM 的实现成本有点儿高被 Delay 了,:)[/p]
转载请注明出处:微信公众号 Kotlin
相关文章推荐
- Mybatis 动态加载sql when otherwise choose 理解成if else 条件中可以把传来的参数当变量
- SpringMVC Controller函数参数问题(就是作为方法的参数,以类名小写开头可以在JSP页面中获得该变量的数据 )
- 作业题,编写两个类:A和B,A创建的对象可以计算两个正整数的最大公约数,B创建的对象可以计算两个数的最小公倍数,要求:B类中有一个成员变量是A类声明的对象
- 可以解析公式的java类实例--可传入数值运算表达式、含变量的运算表达式
- 安卓声明一个全局变量,每个activity都可以调用和修改
- 变量声明置顶规则、函数声明及函数表达式和函数的arguments属性初始化
- 变量和表达式-变量的声明和赋值
- final关键字可以用来修饰类、方法、变量、参数,不能修饰抽象类和接口
- JavaScript:为什么函数声明后可以不加分号而函数表达式后要加分号呢?
- C程序设计语言- 类型、运算符与表达式-2.1----变量名、数据类型及长度、常量、声明、算数运算符、关系运算符与逻辑预算符
- JavaScript函数参数以及变量声明讨论
- C语言为什么被const声明的变量不是一个常量表达式
- 【objective-c】内存管理中成员变量声明参数的一些总结
- 将变量x声明为unsigned类型,可以保证右移时无论程序在什么机器上运行,左边空位都由0填补
- final关键字可以用来修饰类、方法、变量、参数,不能修饰抽象类和接口
- sql:存储过程,事务,out参数 ,可以记录错误信息,系统变量的集合
- var this.value 可在任意地方 声明 类成员变量。如果可以利用在C++ 那该有多好啊
- 关于如何使用反射声明一个泛型类型变量(泛型参数是动态的)的问题
- C#集合篇,在业务背景下(***产品升级管理):依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量巧用,属性实际运用,唯一性验证
- 一个函数调用另一个函数,最好用参数传递。不然就得声明为全局变量。被调用的函数里边,变量前面写 global