V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
q13859601
V2EX  ›  Kotlin

初入 kotlin,源码找不见求教

  •  
  •   q13859601 · 2020-06-21 11:56:34 +08:00 · 3221 次点击
    这是一个创建于 532 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2020-06-21 13:19:03 +08:00
    yuankui
        1
    yuankui  
       2020-06-21 11:58:29 +08:00   ❤️ 1
    如果是 mac,可以按住 cmd+鼠标左键单击"-=",可以到达方法的定义。
    具体实现可以参考官方文档,extension method
    q13859601
        3
    q13859601  
    OP
       2020-06-21 12:11:25 +08:00
    @yuankui 感谢帮助~
    点进去看了也只是个接口定义,没有具体的实现类;
    扩展方法和运算符重载也能理解,关键问题是,这个源码到底在哪里,通过 IDE 如何找到这个源码或者是文档怎么翻这个索引才能找到- -,我可能是懒吧,但是真的没办法像 java 一样 IDEA 里直接撸就能翻到。
    ChenFanlin
        4
    ChenFanlin  
       2020-06-21 12:38:59 +08:00   ❤️ 1
    我这边直接点进去是有的
    q13859601
        5
    q13859601  
    OP
       2020-06-21 12:47:08 +08:00
    @ChenFanlin
    嗯嗯 这个我也是可以看到的,但是这个是 MutableCollection.minusAssign,也就是说他是 values 的 minusAssign,调用的是
    MutableCollection 接口的 remove 方法,我是想找到 LinkedHashMap 的 values 实现类的 remove 方法的实现,这里面应该有关联删除 map entry 的逻辑
    ChenFanlin
        6
    ChenFanlin  
       2020-06-21 13:02:22 +08:00   ❤️ 1
    @q13859601 #5
    - 就是调用了 remove 方法, 那就是相当于 map.values().remove(), 直接去 LinkedHashMap 源码看好了. values() , AbstractCollection.remove() ,LinkedHashIterator.remove()
    q13859601
        7
    q13859601  
    OP
       2020-06-21 13:19:03 +08:00
    @ChenFanlin
    明白了 感谢,实现实际是 jdk 的,而这个 values 里面存的是 node,感谢最终委托给了 HashMap 的 removeNode
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2196 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    ♥ Do have faith in what you're doing.