试图理解ruby语法

时间:2013-09-18 08:35:20

标签: ruby-on-rails ruby

我是ruby的新手,我不明白一些例子

任何人都可以解释这个探索

redirect_to @message ? read_account_inbox_message_url(@message) : account_inbox_url

7 个答案:

答案 0 :(得分:2)

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

Wiki

答案 1 :(得分:2)

它被称为三元运算符。这是

的简写
redirect_to if @message
  read_account_inbox_message_url(@message)
else
  account_inbox_url
end

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

答案 2 :(得分: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

答案 3 :(得分:1)

它是一样的:

if @message
  read_account_inbox_message_url(@message)
else
  account_inbox_url
end

答案 4 :(得分: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

答案 5 :(得分: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

答案 6 :(得分:0)

此代码与以下内容相同:

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

如果@message是“真实的”(在Ruby中,除nilfalse之外的所有内容都是真实的),read_account_inbox_message_url(@message)的结果将作为参数传递给{{ 1}}方法。否则将传递redirect_to结果。