[英]What does this syntactically mean in groovy?
當我在 groovy shell (2.5.8) 中執行此操作時:
groovy:000> println("s":"s")
[s:s]
===> null
為什么我的打印語句打印了地圖(如果是這樣的話)?
語法println("s":"s")
是傳遞命名參數的示例,它們被解釋為Map
。
與構造函數一樣,普通方法也可以使用命名參數調用。 為了支持這種表示法,在方法的第一個參數是
Map
的情況下使用約定。
因此,根據上面鏈接的文檔,您有一個名為s
的參數,其值也是s
,Groovy 將它們放入Map
中。 您可以在方法調用中添加額外的命名參數,這些參數也將添加到Map
中。 此語法適用於任何接受Map
作為其第一個參數的方法。 在println
的情況下,它接受Object
,並且由於Map
是Object
,因此可以將命名參數傳遞給此方法。
您看到的是 Groovy 中 Map 文字中的方括號省略。
調用可以重寫為:
println( [ "aa":"bb" ] ) // all brackets in place
println "a":"bb" // no brackets at all
println a:"bb" // a variant, where the left part of : is treated as key in Map Literal
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.