我目前正在尝试转换这个ruby数组:
[5, 7, 8, 1]
Run Code Online (Sandbox Code Playgroud)
进入这个:
[[5], [7], [8], [1]]
Run Code Online (Sandbox Code Playgroud)
什么是最好的方式?
我现在这样做:
[5, 7, 8, 1].select { |element| element }.collect { |element| element.to_a }
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
警告:默认`to_a'将过时
我究竟做错了什么?你能告诉我如何做到这一点吗?
在此先感谢您的问候!
Mar*_*une 28
最短,最快的解决方案是使用Array#zip:
values = [5, 7, 8, 1]
values.zip # => [[5], [7], [8], [1]]
Run Code Online (Sandbox Code Playgroud)
另一种可爱的方式是使用transpose:
[values].transpose # => [[5], [7], [8], [1]]
Run Code Online (Sandbox Code Playgroud)
最直观的方式可能是@Thom建议的:
values.map{|e| [e] }
Run Code Online (Sandbox Code Playgroud)
Jör*_*tag 17
无点风格:
[5, 7, 8, 1].map(&method(:Array))
Run Code Online (Sandbox Code Playgroud)
Tho*_*ith 11
试试这个:
[5, 7, 8, 1].map {|e| [e]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2948 次 |
| 最近记录: |