跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Kotlin 匿名函数的问题
未分類
12 4 月 2020

Kotlin 匿名函数的问题

Kotlin 匿名函数的问题

資深大佬 : TxcA 20

    val numbers1 = mutableListOf(0, 1, 2, 3, 4)     val numbers2 = mutableListOf(5, 6, 7, 8, 9)     println("numbers : ${numbers1.zip(numbers2) { a, b -> a + b }}")     println("numbers add {} : ${numbers1.zip(numbers2) { a, b -> { a + b } }}")      //println     //numbers : [5, 7, 9, 11, 13]     //numbers add {} : [() -> kotlin.Int, () -> kotlin.Int, () -> kotlin.Int, () -> kotlin.Int, () -> kotlin.Int] 

今天无意遇到一个问题,使用 zip 时一直报 null,检查好久后才发现多了一个花括号。 看了半天始终没明白,为什么匿名函数内多加一个花括号会导致返回 Unit?

大佬有話說 (6)

  • 資深大佬 : fansangg

    百度一下闭包

  • 資深大佬 : maninfog

    确保 3 点
    1.lamda 表达式会默认返回最后一个表达式的值,并推导类型,比如 a+b 就是一个表达式,结果是 Int,所以 kotlin 推导出值是 Int 类型。
    2.{a +b}就不是 Int 类型了,它也是一个 lamda 表达式,类型应该是一个()->Int 的函数类型,所以这里编译器推导出类型为()->Int 。
    3.既然用了 kotlin 就不要用 java 的 lambda 的写法了,两者不一样

  • 資深大佬 : kmyzzy

    a+b 的类型是 int ;{ a + b } 的类型是 Unit

  • 主 資深大佬 : TxcA

    @fansangg 感谢,

  • 主 資深大佬 : TxcA

    @maninfog 感谢,大概理解了。

  • 主 資深大佬 : TxcA

    @kmyzzy 感谢,

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具