代码之家  ›  专栏  ›  技术社区  ›  Brandon Frohbieter

ruby方法链接

  •  0
  • Brandon Frohbieter  · 技术社区  · 14 年前
       var.split('/').delete_at(0)
    

    检验返回时

    "" 
    

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

    不会给我带来麻烦。这可能是一个愚蠢的问题,但是对于这种方法链接是否有某种限制/限制?

    谢谢, 布兰登

    3 回复  |  直到 13 年前
        1
  •  8
  •   Nicolas Blanco    14 年前

    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
  •  2
  •   Mark Byers    14 年前

    从字面上说,我首先要做的是:

    经检验退回

    ""

    不管绳子是什么

    '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)
    
        3
  •  0
  •   Mladen Jablanović    14 年前

    如果始终需要删除第一个元素,则可以使用返回对象本身的其他方法,例如 slice!

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