Hia的!我最近想知道一件有趣的事情。说我有这个片段:
params['path'].split('/').delete_at(-1).each do |dir|
# some work
其中
params['path'] = 'lorem/ipsum/dir/file.ext' #for instance
我真正想做的是迭代ad hoc数组的所有成员,除了最后一个。该代码段显然不起作用,因为delete_at
会返回已删除的元素。
有没有办法用“内联”语法切片数组?还是我非常想念一些东西?你知道其他一些技巧可以让类似的方法更容易链接吗?
答案 0 :(得分:2)
只需使用Array#[]
范围:
params['path'].split('/')[0..-2].each
答案 1 :(得分:2)
使用Array[range]
语法:
params['path'].split('/')[0...-1].each do |dir|
# ...
0...-1
表示从索引0
到最终排除的索引1
。
这与.slice(0...-1)
相同。
查看文档 here
在此处试试:http://codepad.org/HyZ2GHxo
您可能希望改为使用File.dirname:
File.dirname(params['path']).split('/').each ...