1

嗨!我最近想知道一件有趣的事情。说我有这个片段:

params['path'].split('/').delete_at(-1).each do |dir|
   # some work

在哪里

params['path'] = 'lorem/ipsum/dir/file.ext' #for instance

我真正想做的是迭代除最后一个之外的 ad hoc 数组的所有成员。该片段显然不起作用,因为delete_at返回已删除的元素。

有没有办法用“内联”语法对数组进行切片?还是我非常想念什么?你知道其他一些使类似方法链接更容易的技巧吗?

4

2 回答 2

2

只需使用Array#[]范围:

params['path'].split('/')[0..-2].each
于 2011-09-19T18:03:55.833 回答
2

使用Array[range]语法:

params['path'].split('/')[0...-1].each do |dir|
    # ...

0...-1表示从索引0到索引1从末尾排他。

这与.slice(0...-1).

在此处查看文档

在这里试试:http: //codepad.org/HyZ2GHxo


您可能想改用 File.dirname :

File.dirname(params['path']).split('/').each ...
于 2011-09-19T18:04:06.400 回答