我在ruby中为一个迭代人员列表(名为@personList)的类编写了一个搜索器函数。 它面临一个例外。
我的代码:
def search (nCode)
for x in @personList
if x.nCode == nCode
x.to_s
end
end
我使用每个编写相同的代码,它也面临同样的异常。 我的代码出了什么问题? (我是Ruby的新手!我无法解决这个问题)
答案 0 :(得分:6)
此if
由一对换行符分隔:
x.to_s if x.nCode == nCode
此if
需要明确的end
:
if x.nCode == nCode
x.to_s
end
您在第一个样本中打开了三个块(def
,for..in
,if
),但只关闭了两个块。您的缩进表示if
是您未关闭的。因此,您有语法错误。否则,两个样本的功能相同。
答案 1 :(得分:0)
Ruby if
需要end
才能完成。如果您使用end作为您的异常代码,它将起作用。
if x.nCode == nCode
x.to_s
end
对于第二种情况,或者你工作,它实际上是在一行中完成条件和执行。这就是为什么它不需要任何end
,它对你有用。
您可以从here找到有关if
的更多详细信息。