红宝石语法错误在多种情况下使用&&
问题描述:
我很困惑,为什么当在程序可以继续之前结合两个应该为true的条件时,我使用'& &'出现语法错误。我是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]
我添加了第三届“返回true”条款包括rev_code 300和cdm_code 86580. 我同时需要rev_code 300和cdm_code 86580申报陈述为真,所以我需要在它们之间添加“& &”。它看起来像是在“charge [:rev_code]”之后,而不是第二个条件,期待“结束”。
是否有任何其他的方式来编码,以避免语法错误?
答
由于这是一条单线声明,请将include?参数括号:
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
另一个要考虑的是'回归TRUE'当评估一个布尔条件是一种浪费。只是表示逻辑原样,这是隐式返回。 – tadman
我不想把所有的代码放在一起,因为如果rev_code'300'和cdm_code'86580'都存在,我只希望它成为True。这就是我为什么单独编码的原因。其他代码独立于我的新代码。我是否仍然可以使用“&&”来添加对象? – malex
我用([charge [:rev_code])和(charge [:cdm_code])上的圆括号试了一下。我得到了另一个语法错误,意外的tLPAREN_ARG,期待keyword_end(SyntaxError)..._ code])&& ['86580']。include? (电荷[:cdm_code])。只是好奇,是“包括”之间的空间吗?和“(charge”有什么区别? – malex