内联数组切片
嗨!最近我在想一件有趣的事情。假设我有这个片段:
params['path'].split('/').delete_at(-1).each do |dir|
# some work
其中
params['path'] = 'lorem/ipsum/dir/file.ext' #for instance
我真正想做的是迭代临时数组中除最后一个成员之外的所有成员。该代码段显然不起作用,因为 delete_at
返回已删除的元素。
有没有办法用“内联”语法来切片数组?或者我真的错过了什么?您是否知道一些其他技巧可以使类似的方法链接更容易?
Hia! I was wondering about an interesting thing recently. Say I have this snippet:
params['path'].split('/').delete_at(-1).each do |dir|
# some work
where
params['path'] = 'lorem/ipsum/dir/file.ext' #for instance
What I actually want to do is to iterate over all members of the ad hoc array except the last one. The snippet obviously doesn't work, because delete_at
returns the deleted element.
Is there any way to slice array with "inline" syntax? Or am I terribly missing something? Do you know some other tricks to make similar method chaining easier?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需使用
Array#[]
和一个范围:Just use
Array#[]
with a range:使用
Array[range]
语法:0...-1
表示从索引0
到索引1
结局独家。这与
.slice(0...-1)
相同。请参阅此处的文档
尝试一下这里: http://codepad.org/HyZ2GHxo
您可能想使用 File.dirname 代替:
Use the
Array[range]
syntax:0...-1
means from index0
to index1
from the end exclusive.This is the same as
.slice(0...-1)
.See the docs here
Try it here: http://codepad.org/HyZ2GHxo
You may want to use File.dirname instead: