2010-10-31 84 views
0
var.split('/').delete_at(0) 

返回紅寶石方法經檢查鏈接

"" 

不管什麼字符串,但是....

var.split('/') 
    var.delete_at(0) 

給我任何麻煩。這可能是一個愚蠢的問題,但是有沒有像這樣的方法鏈接的某種限制/限制?

感謝, 布蘭登

+2

請提供輸入和輸出。 – 2010-10-31 01:19:39

回答

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] 
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) 
0

如果你總是需要刪除的第一個元素,你可以使用返回對象本身的其他方法,比如slice!,例如:

s = 'foo/bar/baz' 
#=> "foo/bar/baz" 
s.split('/').slice!(1..-1) 
#=> ["bar", "baz"] 
+0

感謝這個例子。 – Orbit 2010-10-31 13:54:41