V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
pdog18
V2EX  ›  Android

kotlin 的扩展方法真的太神了。

  •  
  •   pdog18 · Mar 18, 2018 · 19317 views
    This topic created in 2962 days ago, the information mentioned may be changed or developed.

    刚看 kotlin 两天,其他一些我顶多以为是语法糖或者将某些错误提前到编译期。 但是这个语法糖真的是太溜了,还可以对Int类型直接操作,我想要写dp的话 直接用 16.dp()就可以了,简直不要太舒服。

    另外吐槽下泛型,Java 的各种 extends,super 的泛型怎么写还没搞明白,复杂一点的泛型每次都要百度 ,来学 kotlin 的泛型我估计要完全搞乱了

    Supplement 1  ·  Mar 18, 2018

    又看到了 inline关键字,居然还可以提高性能,好溜哇

    21 replies    2020-10-20 13:46:31 +08:00
    secondwtq
        1
    secondwtq  
       Mar 18, 2018
    语法糖比较 trivial 也就算了,“将某些错误提前到编译期” 在楼主的眼中也那么的 trivial 么?
    ian19znj
        2
    ian19znj  
       Mar 18, 2018 via iPhone   ❤️ 4
    c#扩展方法了解一下
    jackyzy823
        3
    jackyzy823  
       Mar 18, 2018
    D 语言的 Uniform Function Call Syntax (UFCS) 了解一下 (算了太小众了
    pdog18
        4
    pdog18  
    OP
       Mar 18, 2018
    @secondwtq 新手嘛,现在感觉不强烈嘛,哈哈
    pdog18
        5
    pdog18  
    OP
       Mar 18, 2018
    你们讲的这些都不知道哇
    gs139
        6
    gs139  
       Mar 18, 2018 via Android
    跟 js,ruby 学的,这种特性尽量别用,容易污染
    aminic
        7
    aminic  
       Mar 18, 2018 via Android   ❤️ 1
    请 C#程序员不要吐槽
    ian19znj
        8
    ian19znj  
       Mar 18, 2018 via iPhone
    @aminic c#被鄙视惯了,难得傲娇一下,见谅
    ntdll
        9
    ntdll  
       Mar 18, 2018
    确实,虽然是语法糖,但是糖确实好吃。

    扩展方法用于做一些工具方法感觉挺方便的。例如

    fun Any.toJsonString()
    fun String.toJsonObject()

    不过关于泛型,kotlin 有一些不同(也不能算坑吧),比如 Map<String>和 Map<Int>并不是一个类型,也不能转换,虽然 Java 在编译后会进行类型擦除,这两个在运行时期是一样的,但是 kotlin 在编译时期的检查就是认为不一样。
    pdog18
        10
    pdog18  
    OP
       Mar 18, 2018
    `fun Any.toJsonString() ` 这个感觉很甜啊。大佬大佬还有哪些
    AntiGameZ
        11
    AntiGameZ  
       Mar 18, 2018
    每次看到这种帖子的时候,我内心都想骂一下微软的不争气。
    otakustay
        12
    otakustay  
       Mar 18, 2018   ❤️ 1
    根据玩 C#的经验,如果第三方库喜欢定义扩展方法,多起来冲突了还是很烦人的
    lizhuoli
        13
    lizhuoli  
       Mar 18, 2018 via iPhone   ❤️ 1
    C# D Objective-C Swift Ruby 程序员表示你这不是语言第一课的知识吗
    shnoparty
        14
    shnoparty  
       Mar 18, 2018 via iPhone
    Kotlin 出的各种 DSL 了解一下
    wellsc
        15
    wellsc  
       Mar 18, 2018 via iPhone
    很 Ruby,但我不喜欢
    bobuick
        16
    bobuick  
       Mar 18, 2018   ❤️ 1
    最近看 scala,kotlin 这种专门发明用来处处针对 java 的语言,也是可爱的很 =。=
    HangoX
        17
    HangoX  
       Mar 18, 2018 via Android
    你去看一下 groovy 会更惊讶吧,当然还有 swift
    AngelCriss
        18
    AngelCriss  
       Mar 18, 2018
    @jackyzy823 不不不,Rust 也有
    iFlicker
        19
    iFlicker  
       Mar 19, 2018 via Android
    groovy 很神奇的
    mmdsun
        20
    mmdsun  
       Mar 20, 2018
    kotlin 很多地方参考了 c# 我看 kotlin 文档看不懂 都去 msdn 查资料 滑稽
    amok
        21
    amok  
       Oct 20, 2020
    lambda 是通过 new 匿名类实现的,inline 是为了避免 lambda 在循环之类的开销
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1406 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 17:10 · PVG 01:10 · LAX 10:10 · JFK 13:10
    ♥ Do have faith in what you're doing.