Groovy 與 Python 的差別【翻譯】

本文內容

  • General 通常
  • Lists 列表
  • Maps 映射
  • Ranges/Slices 範圍/片斷
  • Object access 對象訪問
  • 參考資料

Groovy 是一種基於 JVM 的敏捷開發語言,它結合了 Python、Ruby 和 Smalltalk 的許多強大的特性,Groovy 代碼可以與 Java 代碼很好地結合,也能用於擴展示有代碼。因爲其運行在 JVM 上的特性,Groovy 可使用其餘 Java 語言編寫的庫。spa

General

Pythoncode

Groovy對象

repr(x)ip

x.inspect(), x.dump()ci

x.y if x else None開發

x?.yget

"%(foo)s" % locals()it

"${foo}"table

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)

參考資料

相關文章
相關標籤/搜索