kotlin 的扩展方法真的太神了。 - V2EX
pdog18

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

  •  
  •   pdog18 Mar 18, 2018 19413 views
    This topic created in 2985 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
    /div>
    很 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     1013 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 75ms UTC 19:19 PVG 03:19 LAX 12:19 JFK 15:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86