pdog18
V2EX  ›  Android

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

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

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

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

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