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.keys() explicitly
d.keySet()
d.values()
d.values()
d.collect { k, v -> k+1 }
d = dict(zip(k, v))
k = 1..3
v = 'a'..'c'
d = [:]; k.eachWithIndex { it, i -> d = v }
println d //
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"
"abcdef"
Object access 对象访问
Python
Groovy
m = 'strip'; getattr(' ! ', m)()
m = 'trim'; ' ! '."$m"()
args = ('a', 2); 'abcabc'.find(*args)
args = ['a', 2]; 'abcabc'.indexOf(*args)
参考资料
[*]Groovy Differences from Python
页:
[1]