Vla*_*nov 39 ruby arrays enumerable
这是我的阵列:
array = [:one,:two,:three]
Run Code Online (Sandbox Code Playgroud)
我想将to_s方法应用于我的所有数组元素array = ['one','two','three'].
我该怎么做(将可枚举的每个元素转换为其他元素)?
saw*_*awa 66
这将有效:
array.map!(&:to_s)
Run Code Online (Sandbox Code Playgroud)
mik*_*iku 17
您可以分别使用map或者map!第一个将返回一个新列表,第二个将就地修改列表:
>> array = [:one,:two,:three]
=> [:one, :two, :three]
>> array.map{ |x| x.to_s }
=> ["one", "two", "three"]
Run Code Online (Sandbox Code Playgroud)
cor*_*ard 16
值得注意的是,如果你有一个对象数组,你想单独传递给一个具有不同调用者的方法,如下所示:
# erb
<% strings = %w{ cat dog mouse rabbit } %>
<% strings.each do |string| %>
<%= t string %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
您可以使用method与块扩展行为相结合的方法来简化:
<%= strings.map(&method(:t)).join(' ') %>
Run Code Online (Sandbox Code Playgroud)
如果您不熟悉,那么method封装与在Proc中传递给它的符号相关联的方法并返回它.&符号将这个Proc扩展为一个块,它可以map很好地传递给它.返回map是一个数组,我们可能想要更好地格式化它,因此join.
需要注意的是Symbol#to_proc,您不能将参数传递给辅助方法.
array.map!(&:to_s) 将原始数组修改为 ['one','two','three']array.map(&:to_s)返回数组['one','two','three'].| 归档时间: |
|
| 查看次数: |
36346 次 |
| 最近记录: |