语法错误,意外的tSTRING_BEG,期望do或'{'或'('

时间:2019-05-05 12:16:39

标签: ruby hash ternary-operator

我是红宝石的新手,知道条件语句,我尝试过以下操作:

marks_hash
.group_by {
  |name, marks|
  marks >= pass_marks? "Passed": "Failed"
}
enter code here

此无辜的代码给出了以下错误:

  
    

语法错误,意外的tSTRING_BEG,期待do或'{'或'('

  

1 个答案:

答案 0 :(得分:-2)

作为SO share your knowledge

的一部分,回答我自己的问题

问题在以下行中:

  marks >= pass_marks? "Passed": "Failed"

应该是:

  marks >= pass_marks ? "Passed": "Failed"

请注意,在第一个示例中,?附加到了pass_marks,但在第二个示例中,?之前有空格。

区别在于,在pass_marks?中,将pass_marks视为方法,在第二个示例中,将pass_marks创建为三元运算符条件下的变量。

更好的是使用括号来指示执行顺序,在这种情况下,?前的空格将无关紧要:

  (marks >= pass_marks)? "Passed": "Failed"