0

我是红宝石的新手,我不明白一些例子

任何人都可以解释这个expession

redirect_to @message ? read_account_inbox_message_url(@message) : account_inbox_url
4

7 回答 7

2

如果@message返回true则重定向到read_account_inbox_message_url(@message)url,否则重定向到account_inbox_url

维基

于 2013-09-18T08:37:31.330 回答
2

它被称为三元运算符。它是的简写

redirect_to if @message
  read_account_inbox_message_url(@message)
else
  account_inbox_url
end

作为 if 语句,它检查条件的真实性并返回对第一部分或第二部分的评估。

于 2013-09-18T08:43:14.260 回答
1

它被称为三元运算符。这是说的简写:

if redirect_to @message is true 
  then
read_account_inbox_message_url(@message)
  otherwise 
account_inbox_url

语法是

test ? if_test_result_is_true_then_do_this : if_test_result_is_false_then_do_this
于 2013-09-18T08:38:28.177 回答
1

这是相同的:

if @message
  read_account_inbox_message_url(@message)
else
  account_inbox_url
end
于 2013-09-18T08:38:45.447 回答
1

?:是一个三元条件表达式:

condition ? value_if_true : value_if_false

它是以下的简写:

if condition
  value_if_true
else
  value_if_false
end

在您的示例中,@message是条件,read_account_inbox_message_url(@message)是“真值”并且account_inbox_url是“假值”。评估后,redirect_to使用表达式的结果调用。

它相当于(我会这样写):

if @message
  redirect_to read_account_inbox_message_url(@message)
else
  redirect_to account_inbox_url
end
于 2013-09-18T09:06:16.673 回答
0

那是用作方法参数的三元表达式redirect_to

换句话说,它的意思是:redirect to read_account_inbox_message_url(@message) if @message is true, or, redirect_to account_inbox_url

三元表达式的格式为:expression ? evaluate_if_true : evaluate_if_false.

于 2013-09-18T08:40:08.183 回答
0

此代码等效于:

redirect_to (@message ? read_account_inbox_message_url(@message) : account_inbox_url)

如果@message是“真实的”(在 Ruby 中,除了nil和之外的一切false都是真实的),结果read_account_inbox_message_url(@message)将作为参数传递给redirect_to方法。否则account_inbox_url结果将通过。

于 2013-09-18T08:40:15.427 回答