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

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 初入 kotlin,源码找不见求教
未分類
6 6 月 2020

初入 kotlin,源码找不见求教

初入 kotlin,源码找不见求教

資深大佬 : q13859601 5

fun main() {     val numbersMap = mutableMapOf("one" to 1, "two" to 2, "three" to 3, "threeAgain" to 3)     numbersMap.keys.remove("one")     println(numbersMap)     numbersMap.values -= 3     println(numbersMap)     numbersMap.values.remove(3)     println(numbersMap) } 

对于numbersMap.values -= 3 这个-=的运算符重载的源码在哪里呢,难道是 native 么 ide 里面点了半天都是 MutableCollection 的 minusAssign 方法,但是并不清楚这个内部的 values:MutableCollection 的-=的重写如何关联到 map 的 entry 的删除的

求大神指导:D

大佬有話說 (7)

  • 資深大佬 : yuankui

    如果是 mac,可以按住 cmd+鼠标左键单击”-=”,可以到达方法的定义。
    具体实现可以参考官方文档,extension method

  • 資深大佬 : yuankui

    https://kotlinlang.org/docs/reference/operator-overloading.html

  • 主 資深大佬 : q13859601

    @yuankui 感谢帮助~
    点进去看了也只是个接口定义,没有具体的实现类;
    扩展方法和运算符重载也能理解,关键问题是,这个源码到底在哪里,通过 IDE 如何找到这个源码或者是文档怎么翻这个索引才能找到- -,我可能是懒吧,但是真的没办法像 java 一样 IDEA 里直接撸就能翻到。

  • 資深大佬 : ChenFanlin

    我这边直接点进去是有的 初入 kotlin,源码找不见求教

  • 主 資深大佬 : q13859601

    @ChenFanlin
    嗯嗯 这个我也是可以看到的,但是这个是 MutableCollection.minusAssign,也就是说他是 values 的 minusAssign,调用的是
    MutableCollection 接口的 remove 方法,我是想找到 LinkedHashMap 的 values 实现类的 remove 方法的实现,这里面应该有关联删除 map entry 的逻辑

  • 資深大佬 : ChenFanlin

    @q13859601 #5
    – 就是调用了 remove 方法, 那就是相当于 map.values().remove(), 直接去 LinkedHashMap 源码看好了. values() 初入 kotlin,源码找不见求教, AbstractCollection.remove() 初入 kotlin,源码找不见求教,LinkedHashIterator.remove() 初入 kotlin,源码找不见求教

  • 主 資深大佬 : q13859601

    @ChenFanlin
    明白了 感谢,实现实际是 jdk 的,而这个 values 里面存的是 node,感谢最终委托给了 HashMap 的 removeNode

文章導覽

上一篇文章
下一篇文章

AD

其他操作

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

51la

4563博客

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