if语句中的异常

时间:2013-12-31 15:24:00

标签: ruby if-statement for-loop each

我在ruby中为一个迭代人员列表(名为@personList)的类编写了一个搜索器函数。 它面临一个例外。

我的代码:

def search (nCode)
    for x in @personList
        if x.nCode == nCode 
            x.to_s
    end
end

我使用每个编写相同的代码,它也面临同样的异常。 我的代码出了什么问题? (我是Ruby的新手!我无法解决这个问题)

2 个答案:

答案 0 :(得分:6)

if由一对换行符分隔:

x.to_s if x.nCode == nCode 

if需要明确的end

if x.nCode == nCode 
    x.to_s
end

您在第一个样本中打开了三个块(deffor..inif),但只关闭了两个块。您的缩进表示if是您未关闭的。因此,您有语法错误。否则,两个样本的功能相同。

答案 1 :(得分:0)

Ruby if需要end才能完成。如果您使用end作为您的异常代码,它将起作用。

if x.nCode == nCode 
    x.to_s
end

对于第二种情况,或者你工作,它实际上是在一行中完成条件和执行。这就是为什么它不需要任何end,它对你有用。

您可以从here找到有关if的更多详细信息。