当只使用一个变量时,使用多个赋值是不好的做法吗?

Jon*_*han 2 ruby

在以下多重赋值示例中,该变量will_not_be_used不会在其他任何位置引用.但是,我个人认为这种方法简单易懂.

这被认为是一种不好的做法吗?

useful,will_not_be_used = my_hash.detect { |key,value| value == "foo" }
Run Code Online (Sandbox Code Playgroud)

Dar*_*tle 8

使用下划线(_)来表示一次性值是不恰当的:

useful, _ = my_hash.detect { |key,value| value == "foo" }
Run Code Online (Sandbox Code Playgroud)

更新:正如JörgWMittag在下面的评论中所指出的,Ruby本身理解_为一个一次性变量:当启用警告运行时,Ruby(至少MRI,可能是其他人)将警告未使用的局部变量,除非他们以下划线开头.

  • 它不仅仅是惯用的,它甚至受到执行引擎的鼓励:未使用的局部变量会触发警告,除非它们以下划线开头. (3认同)
  • @muistooshort至少在MRI 2.0.0p195中,它是以"_`"开头,而不仅仅是"_"本身,据我所知. (3认同)
  • 请注意,IRB和PRY使用`_`来保存最后一个表达式的结果.如果您明确指定它,请记住一些事项. (3认同)
  • 是的,他们在2.0中更改了它,如果你在源代码中检查`warn_unused_var`你会得到[`is_private_local_id`](https://github.com/ruby/ruby/blob/ruby_2_0_0/parse.y#L8606)并看到`RSTRING_PTR(s)[0] =='_'`测试.1.9.3只需在[`warn_unused_var`](https://github.com/ruby/ruby/blob/ruby_1_9_3/parse.y#L9128)中检查`_`. (2认同)