Ruby 语法 - (? 和 if else) 之间有什么区别

标签 ruby if-statement syntax conditional-operator

<分区>

我想知道 if else 语法和 ?句法。我在网上看到一个例子,他们使用问号而不是 if else 语句。我明白 if 语句只能在一行中使用

return true if 4 > 3

代替

if 4 > 3
  return true
else
  return false
end

但是,我对您在那种情况下何时使用问号感到困惑。这是我在视频中看到的示例。

@date = params[:month] ? Date.parse(params[:month]) : Date.today

从表面上看,这似乎是 if else 语句的替代语法。但是,我以前从未见过它,也不知道它的作用。

我也知道方法可以以问号结尾,表示它应该像这样返回真值或假值

def is_multiple_of_4? (x)
  return true if x % 4 == 0
end

但是,上面的语法是不同的。我很想了解这意味着什么以及它和 if else 语句之间的区别。

最佳答案

?: 是一个三元运算符,来自 C、C++ 和 Java 等语言(参见此处了解来源 - http://en.wikipedia.org/wiki/%3F:)。

Ruby 借用它是为了熟悉。此外,?: 表达式更简洁,但在更复杂的情况下可能变得非常难以阅读,在这种情况下,if-else 结构可能是首选。

关于Ruby 语法 - (? 和 if else) 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23997529/

相关文章:

PHP 在 if 语句中组合 boolean 运算符(AND、OR)

javascript - jQuery .first-child 语法

c# - SQL 语法问题

syntax - 需要有关创建新 "standard"的建议/"language"

mysql - 方法无法使用 Rails ActiveRecord + Raw SQL 返回 Average

ruby-on-rails - ruby on rails 中的身份验证器是什么

CSS 和 .less : Set a font color if user pick a specific color through web interface

algorithm - 作业 : Algorithm to determine the two most popular items in a shopping cart

ruby - 我应该试验什么算法来尝试对这些 PDF 进行分类?

ruby-on-rails - Rails 3 Action 邮件 OpenSSL::SSL::SSLError