ruby中的语法错误使用&&在多种条件下

时间:2017-08-01 21:39:32

标签: ruby

我很困惑为什么我使用'&&'时出现语法错误当在程序可以继续之前组合两个应该为真的条件时。我是ruby的新手,并且没有机会亲自编写一个完整的程序。 我只是更新一个旧程序,并通过任何类似于我需要更新它的代码进行跟踪。

这是我的代码:

def drug_dispensation_condition(charge)
  return true if ['250','251'].include? charge[:rev_code]
  return true if ['981262'].include? charge[:cdm_code]
  return true if ['300'].include? charge[:rev_code] && ['86580'].include? charge[:cdm_code]  #this line is inserted
  false
end

这是我的错误消息:

  

语法错误,意外的tIDENTIFIER,期待keyword_end   (syntaxerror)... e]&& [ '86580']。包括?电荷[:cdm_code]

我添加了第3个“return true”子句以包含rev_code 300和cdm_code 86580。 我需要rev_code 300和cdm_code 86580来声明该语句为True,所以我需要添加“&&”在他们之间。它似乎是在“充电[:rev_code]”而不是第二个条件之后期待“结束”。

有没有其他方法对此进行编码以避免语法错误?

1 个答案:

答案 0 :(得分:2)

因为这是一个单行的声明,包装包含?括号中的参数:

return true if ['300'].include?(charge[:rev_code]) && ['86580'].include?(charge[:cdm_code])

我认为你可以让它更具可读性:

def drug_dispensation_condition(charge)
  if ['250', '251', '300'].include?(charge[:rev_code]) ||
     ['981262', '86580'].include?(charge[:cdm_code])
    return true
  end
  false
end