-1

我有以下代码:

def test_compare()
  if true
    condition = true
  else
    condition = false
  end

  assert_equal(true, condition)
end

在 Ruby 中,块内的变量与根据“我不理解 ruby​​ 本地范围if”声明的在块外声明的变量具有相同的范围。if

在控制结构内部初始化变量而不首先声明它们或在控制结构外部初始化它们是常见的做法吗?

来自 Java.NET 背景,这似乎使代码的可读性降低并且更容易出现逻辑错误。

我正在尽最大努力“不在 Ruby 中编写 .NET 代码”,但想了解为什么上述内容比在范围开头或控制结构之外声明范围变量更有意义。

4

1 回答 1

3

if返回值。使用这种行为更干净。

x = if condition
  # several lines of calculations can be here
  'true value'
else
  # several lines of calculations can be here
  'false value'
end

或者,在这种具体情况下,最好使用三元运算符。它做同样的事情并且更短。

x = condition ? 'true value' : 'false value'
于 2013-02-15T15:31:01.730 回答