【问题标题】:Prevent side effects in Ruby防止 Ruby 中的副作用
【发布时间】:2013-07-12 09:15:54
【问题描述】:
a = [1,2,3,4]
b = a << 5
a == [1,2,3,4] # returns false

如何在不修改a本身的情况下将b分配给a,并在末尾附加5

【问题讨论】:

    标签: ruby


    【解决方案1】:

    只需对两个数组求和:

    a = [1,2,3,4]
    b = a + [5]
    
    # b == [1, 2, 3, 4, 5]
    # a == [1, 2, 3, 4]
    

    【讨论】:

      【解决方案2】:

      Ruby 变量保存对象的引用= 运算符复制引用

      看来你想clonea:

      irb(main):001:0> a = [1,2,3,4]
      => [1, 2, 3, 4]
      irb(main):002:0> b = a.clone << 5
      => [1, 2, 3, 4, 5]
      irb(main):003:0> a
      => [1, 2, 3, 4]
      irb(main):004:0> b
      => [1, 2, 3, 4, 5]
      

      【讨论】:

      【解决方案3】:

      我通常这样做:

      b = [*a, 5]
      

      【讨论】:

      • 或更简单的:b = *a, 5
      猜你喜欢
      • 2014-01-01
      • 2022-08-24
      • 1970-01-01
      • 2016-10-03
      • 2012-07-05
      • 1970-01-01
      • 2019-06-25
      • 2020-08-08
      • 1970-01-01
      相关资源
      最近更新 更多