我正在使用Ruby 2.4。如何将复杂函数映射到我的字符串数组中的每个元素?功能是
elt.gsub!(/\A\p{Space}+|\p{Space}+\z/, '')
假设“elt”是我的字符串数组中的元素。这是一个美化的“条带”功能。我想将它应用于我的数组中的每个项目。
答案 0 :(得分:5)
您正在寻找的是块语法。
def word_count(string):
tokens = string.split()
n_tokens = len(tokens)
return n_tokens
大括号内的任何内容都将被视为"功能" new_arr = arr.map { |elt| elt.gsub(/\A\p{Space}+|\p{Space}+\z/, '') }
。对于较长的块,您可以使用map
do .. end
在语义上等同。
答案 1 :(得分:2)
如果您了解.map(&:strip)
,您可能知道所需的一切,proc
或可能转换为proc
的任何内容的语法都没有区别(阅读:对{的回复{1}}。)#to_proc
回复Symbol
,这就是#to_proc
有效的原因。 .map(&:strip)
回复proc
,回归自我。也就是说,以下内容完全有效(#to_proc
不需要map
就好了),因为它使用的是带有each
的条带grep!
来修改所有内容,但是为了浓度):
.map(&->(x) { x.gsub!(/\A\p{Space}+|\p{Space}+\z/, '') })