采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
同一个lambda表示式(Int)->Int 为什么一个行一个不行呢
因为下面的lambda是直接传给foreach的,类型推导的时候直接按照foreach的参数类型推导,结果是(Int)->Unit类型
lambda 最后一行不是表示式的 返回值么 应该是Int 啊
lambda表达式的类型推导有个顺序,实际上lambda最后一行不管表达式的值的类型是什么,我们都可以把他的返回类型声明为Unit,当然你不声明的话就像你说的是返回表达式的类型也就是Int了。这里foreach的参数类型是确定的,等于为参数的lambda表达式声明了类型必须为int->unit。
val func = { ele: Int -> ele + 1 } 这个func 相当于已经声明了是 Int-> Int 所以不能再传入foreach中, { ele: Int -> ele + 1 } 没有变量接收,所以可以被foreach声明为int ->Unit
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.5k 4
1.6k 1
397 1
236 20
1.4k 16