var.split('/').delete_at(0)
检查后返回
""
无论字符串是什么......
var.split('/')
var.delete_at(0)
给我带来麻烦。这可能是一个愚蠢的问题,但对于像这样的方法链接是否存在某种限制/限制?
感谢, 布兰登
答案 0 :(得分:8)
delete_at方法删除元素,但返回已删除的元素而不是新数组。
如果要始终返回对象,可以使用tap方法(自Ruby 1.8.7起可用)。
a = [1, 2, 3, 4, 5, 6, 7]
a.delete_at(0) # => 1
a # => [2, 3, 4, 5, 6, 7]
a = [1, 2, 3, 4, 5, 6, 7]
a.tap { |a| a.delete_at(0) } # => returns [2, 3, 4, 5, 6, 7]
a # => [2, 3, 4, 5, 6, 7]
答案 1 :(得分:2)
你确定吗?尝试字符串从字面上看,我试图做的第一件事就是:
var.split( '/')。delete_at(0)
在检查时返回
“”
无论字符串是什么
'a/b'
:
irb(main):001:0> var = 'a/b'
=> "a/b"
irb(main):003:0> var.split('/').delete_at(0)
=> "a"
请注意,返回值是已删除的元素,而不是数组。您通过执行拆分创建的数组未存储在任何位置,现在您没有引用它。你可能想要这样做:
a = var.split('/')
a.delete_at(0)
答案 2 :(得分:0)
如果您总是需要删除第一个元素,则可以使用其他返回对象本身的方法,例如slice!
,例如:
s = 'foo/bar/baz'
#=> "foo/bar/baz"
s.split('/').slice!(1..-1)
#=> ["bar", "baz"]