• Groovy 与 Python 的差异【翻译】


    本文内容

    • General 一般
    • Lists 列表
    • Maps 映射
    • Ranges/Slices 范围/片段
    • Object access 对象访问
    • 参考资料

    Groovy 是一种基于 JVM 的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。

    General

    Python

    Groovy

    repr(x)

    x.inspect(), x.dump()

    x.y if x else None

    x?.y

    "%(foo)s" % locals()

    "${foo}"

    Lists 列表

    Python

    Groovy

    not x

    !x

    x.empty

    len(x)

    x.size()

    for item, idx in enumerate(x): ...

    x.eachWithIndex { item, idx -> ... }

    Maps 映射

    Python

    Groovy

    {}

    [:] // an empty map

    Depends:

    d if used like: for k in d:

    list(d) if list needed

    d[iter].keys() explicitly

    d.keySet()

    d.[iter]values()

    d.values()

    [k+1 for k in d]

    d.collect { k, v -> k+1 }

    d = dict(zip(k, v))

    k = 1..3

    v = 'a'..'c'

    d = [:]; k.eachWithIndex { it, i -> d[it] = v[i] }

    println d // [1:"a", 2:"b", 3:"c"]

    Ranges/Slices 范围/片段

    Python

    Groovy

    range(3)

    0..<3

    range(1, 3+1)

    1..3

    range(0, 10, 2)

    not represented as a data type but you can use

    0.step(10, 2) {...}

    "abcdef"[3:]

    "abcdef"[3..-1]

    Object access 对象访问

    Python

    Groovy

    m = 'strip'; getattr(' ! ', m)()

    m = 'trim'; ' ! '."$m"()

    args = ('a', 2); 'abcabc'.find(*args)

    args = ['a', 2]; 'abcabc'.indexOf(*args)

    参考资料

  • 相关阅读:
    性能参考指标
    Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
    Java Native Interface 编程系列一
    HTTP的报文与状态码
    [译]Android调整图像大小的一些方法
    Android多线程通信机制
    Android四大组件知识整理
    Java多态与反射
    23种设计模式的优点与缺点概况
    Android应用性能优化
  • 原文地址:https://www.cnblogs.com/liuning8023/p/4286562.html
Copyright © 2020-2023  润新知