【问题标题】:Assign `nil` to multiple variables将 `nil` 分配给多个变量
【发布时间】:2016-01-15 12:38:19
【问题描述】:

我需要将nil 分配给多个变量。我有:

a = nil
b = nil
c = nil

哪种方法最有效?

【问题讨论】:

  • a=b=c=nil。先评价c=nil;然后b=nil(其中nil是从之前的操作返回的);最后 - a=nil.
  • 有哪些选择?
  • “最高效”?你优化什么?
  • 如果您尝试编写类似a=b=c=[] 和a << 0 之后的内容 - 所有变量 (a,b,c) 将等于 [0]。跨度>
  • Ruby 的效率主要不是因为做事更快。它来自做更少的事情(例如使用更有效的算法)。至少,在所有其他优化都用尽并且程序仍然太慢之前,不应尝试微优化。

标签: ruby variable-assignment


【解决方案1】:

它几乎不会比:

a = b = c = nil

【讨论】:

    【解决方案2】:

    要分配nil,您可以使用

    a = b = c = nil
    

    但请记住,这只适用于不可变对象。

    看这个例子:

    a = b = c = "test"
    b << "1"
    a # => "test1"
    

    你可能需要尝试一下:

    a, b, c = 3.times.map{ "test" }
    

    【讨论】:

      【解决方案3】:

      您可以执行以下操作:

      a,b,c = nil,nil,nil
      # or
      a,b,c = [nil] * 3
      

      您还可以执行以下操作,这可以利用变量的默认值为nil(如果未明确分配)这一事实。

      a,b,c = nil
      

      在上述情况下,显式的nil 将分配给a,而b 和c 将获得默认的nil。因此,它的技巧只适用于nil。


      您还可以通过使用虚拟变量_ 作为并行分配中的第一个变量,为所有三个变量分配默认nil。

      _,a,b,c = nil
      

      【讨论】:

      • 并使用 _a,b,c = _ 保存两个击键。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2016-12-24
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多