簡體   English   中英

是否有一個Groovy等同於Ruby的#map?

[英]Is there a Groovy equivalent to Ruby's #map?

我意識到支持#each

  Book.findAll().each(){ book->
    println ">>> ${book}"
  }

並且甚至支持#inject

  def sentence = m.inject('Message: ') { s, k, v ->
    s += "${k == 'likes' ? 'loves' : k} $v "
  }

是否支持#map for Groovy開箱即用(沒有像Functional Java這樣的特殊庫)?

  def list = [1,2,3,4].map{ num->
    num + 1
  }

  assert list == [2,3,4,5]

你想要collect

groovy:000> [1,2,3,4].collect { num -> num + 1 }
===> [2, 3, 4, 5]

我希望有所幫助。

您可以使用收集,如

[1, 2, 3, 4].collect { it + 1 }

對於直接在集合中的每個對象上調用方法的情況,使用spread-dot運算符的語法較短:

[1, 2, 3, 4]*.plus 1 

(使用Groovy添加到java.lang.Integer的方法實現+運算符)

即使列表包含空值,此運算符也可以工作:

groovy:000> [1, 2, 3, null, 4]*.plus 1
===> [2, 3, 4, null, 5]

在哪里收集你必須檢查:

[1, 2, 3, null, 4].collect { it?.plus 1 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM