【问题标题】:assign "it" in each iteration (groovy)在每次迭代中分配“它”(groovy)
【发布时间】:2023-03-25 23:50:01
【问题描述】:

嘿,我尝试在 groovy 中修剪列表的每个字符串项

list.each() { it = it.trim(); }

但这仅适用于闭包,列表中的字符串仍然是“foo”、“bar”和“groovy”。

我怎样才能做到这一点?

【问题讨论】:

    标签: string groovy immutability trim


    【解决方案1】:

    如果你真的需要修改列表,你可以使用 list.eachWithIndex { item, idx -> list[idx] = item.trim() }。

    collect() 更好。

    【讨论】:

      【解决方案2】:

      你也可以使用扩展运算符:

      def list = [" foo", "bar ", " groovy "]
      list = list*.trim()
      assert "foo" == list[0]
      assert "bar" == list[1]
      assert "groovy" == list[2]
      

      【讨论】:

        【解决方案3】:

        @sepp2k 我认为这适用于 ruby​​

        这在 groovy 中有效 list = list.collect() { it.trim(); }

        【讨论】:

          【解决方案4】:
          list = list.collect { it.trim() }
          

          【讨论】:

          • list = list.collect { it.trim() } ty
          • 对,没有参数的方法不能省略括号。固定。
          • 一个奇妙而整洁的解决方案。不胜感激。意味着我可以这样做: items = ViewDefinition.findAllByIdInList(params.id.split("-").collect { it as long })
          【解决方案5】:

          根据Groovy Quick Start,使用collect会收集闭包返回的值。

          这是一个使用 Groovy Shell 的小例子:

          groovy:000> ["a    ", "  b"].collect { it.trim() }
          ===> [a, b]
          

          【讨论】:

            猜你喜欢
            • 2021-07-31
            • 2018-07-01
            • 2015-01-22
            • 2020-10-08
            • 2018-12-03
            • 1970-01-01
            • 1970-01-01
            • 2022-01-23
            • 1970-01-01
            相关资源
            最近更新 更多