2017-08-01 56 views
-1

我很困惑,爲什麼當在程序可以繼續之前結合兩個應該爲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]」之後,而不是第二個條件,期待「結束」。

是否有任何其他的方式來編碼,以避免語法錯誤?

回答

2

由於這是一條單線聲明,請將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 
+1

另一個要考慮的是'迴歸TRUE'當評估一個布爾條件是一種浪費。只是表示邏輯原樣,這是隱式返回。 – tadman

+0

我不想把所有的代碼放在一起,因爲如果rev_code'300'和cdm_code'86580'都存在,我只希望它成爲True。這就是我爲什麼單獨編碼的原因。其他代碼獨立於我的新代碼。我是否仍然可以使用「&&」來添加對象? – malex

+0

我用([charge [:rev_code])和(charge [:cdm_code])上的圓括號試了一下。我得到了另一個語法錯誤,意外的tLPAREN_ARG,期待keyword_end(SyntaxError)..._ code])&& ['86580']。include? (電荷[:cdm_code])。只是好奇,是「包括」之間的空間嗎?和「(charge」有什麼區別? – malex