如何将函数映射到数组的每个元素?
How do I map a function to every element of my array?
我正在使用 Ruby 2.4。如何将复杂函数映射到字符串数组中的每个元素?函数是
elt.gsub!(/\A\p{Space}+|\p{Space}+\z/, '')
假设 "elt" 是我的字符串数组中的一个元素。这是一个美化的 "strip" 功能。我想将它应用于数组中的每个项目。
您要查找的是块语法。
new_arr = arr.map { |elt| elt.gsub(/\A\p{Space}+|\p{Space}+\z/, '') }
大括号内的任何内容都将被视为 map
的 "function"。对于更长的块,您可以使用 do .. end
new_arr = arr.map do |elt|
elt.gsub(/\A\p{Space}+|\p{Space}+\z/, '')
end
这在语义上是等价的。
如果你知道 .map(&:strip)
,你可能知道你需要的一切,语法对于 proc
或可能转换为 proc
的任何内容都没有区别(阅读:回复#to_proc
.) Symbol
响应 #to_proc
,这就是 .map(&:strip)
起作用的原因。 proc
s 响应 #to_proc
,返回自我。就是说,以下内容将完美运行(那里不需要 map
(each
就足够了),因为它使用 banged grep!
来修改所有内容,但为了一致性):
.map(&->(x) { x.gsub!(/\A\p{Space}+|\p{Space}+\z/, '') })
我正在使用 Ruby 2.4。如何将复杂函数映射到字符串数组中的每个元素?函数是
elt.gsub!(/\A\p{Space}+|\p{Space}+\z/, '')
假设 "elt" 是我的字符串数组中的一个元素。这是一个美化的 "strip" 功能。我想将它应用于数组中的每个项目。
您要查找的是块语法。
new_arr = arr.map { |elt| elt.gsub(/\A\p{Space}+|\p{Space}+\z/, '') }
大括号内的任何内容都将被视为 map
的 "function"。对于更长的块,您可以使用 do .. end
new_arr = arr.map do |elt|
elt.gsub(/\A\p{Space}+|\p{Space}+\z/, '')
end
这在语义上是等价的。
如果你知道 .map(&:strip)
,你可能知道你需要的一切,语法对于 proc
或可能转换为 proc
的任何内容都没有区别(阅读:回复#to_proc
.) Symbol
响应 #to_proc
,这就是 .map(&:strip)
起作用的原因。 proc
s 响应 #to_proc
,返回自我。就是说,以下内容将完美运行(那里不需要 map
(each
就足够了),因为它使用 banged grep!
来修改所有内容,但为了一致性):
.map(&->(x) { x.gsub!(/\A\p{Space}+|\p{Space}+\z/, '') })