web-dev-qa-db-ja.com

[:]はどういう意味ですか?

別の開発者のグルーヴィーなコードを読んでいるときに、次の定義に遭遇しました。

def foo=[:]

どういう意味ですか?

29
das Keks

[:]マップの作成 の省略表記です。

キーと値を追加することもできます:

def foo = [bar: 'baz']
32
doelleri

[:]は空のマップを作成します。コロンは、空のリストを作成する[]と区別するためにあります。

このグルーヴィーなコード:

def foo = [:]

これはおおよそ次のようになりますJavaコード:

Object foo = new Java.util.LinkedHashMap();
10
Sean Reilly

引用 the doc

_[:]_が空のマップ式であることに注意してください。

... Mapsize()が0を返す唯一の_)です。それ自体はめったに役に立ちませんが、もちろん、このMapに値を追加できます。

_def emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.foo = 5
assert emptyMap.size() == 1
assert emptyMap.foo == 5
_
2
raina77ow