0

我是编程初学者,从 ruby​​ 开始。现在我尝试搜索文档并查看是否包含患者。我用这段代码实现了这个任务:

@patients.each do |patient|
   if document.include? patient.nachnahme || document.include? patient.vorname
   arr << a 
  end
end

但不知何故我得到了错误:

syntax error, unexpected tIDENTIFIER, expecting keyword_then or ';' or '\n'
if document.include? patient.nachnahme || document.include? patient.vorname

所以我做错了什么?以及如何定义我的 ruby​​ 代码仅在以下情况下运行:

document.include? patient.nachnahme || document.include? patient.vorname 

两种说法都是真的?

4

2 回答 2

9

你需要做的是()围绕你的include?电话。

document.include?(patient.nachnahme) || document.include?(patient.vorname) 

当您执行双重条件时,Ruby 往往会有点困惑,()因为从技术上讲,您可能会调用以下方法调用:

# Not what you are intending
document.include?(patient.nachnahme || document.include? patient.vorname)
于 2013-07-24T19:18:57.350 回答
3

把它写成

if document.include? patient.nachnahme or document.include? patient.vorname

试图在这里重现该问题:

"aaa".include? "a" or "bb".inlcude? "v"
# => true
"aaa".include? "a" || "bb".inlcude? "v"
# ~> -:2: syntax error, unexpected tSTRING_BEG, expecting ')'
# ~> ...include? "a" || "bb".inlcude? "v");$stderr.puts("!XMP1374693...
# ~> ...  

笔记

始终考虑使用andor运算符进行控制流操作。在红宝石中使用和或或

于 2013-07-24T19:18:50.797 回答