我正在用ruby进行一些watir webdriver测试,但似乎无法使用下面的代码。我想把一个可选的validation参数传递给log_activity方法。

def log_activity (type, *validation)
    #do something
end

我将以下参数传递到方法中:
log_activity("license", 1)

我希望validation == 1是真的,但它是假的:
puts validation.empty?
-> false

puts validation
-> 1

if validation == 1
    puts "validation!!!!"
else
    puts "WTF"
end
-> WTF

我做错什么了?
忘了说,我用的是Ruby1.9.3

最佳答案

*validation是一个数组,它包含第二个参数以及之后的所有参数。假设它是一个数组,那么您看到的结果是有意义的。要检查*验证数组中的第一个元素。
或者,如果只得到一个可选参数,则可以执行以下操作:

def log_activity (type, validation=nil)
    #do something
end

那么validation将是您传入的任何内容。

关于ruby - 如何将可选参数传递给Ruby方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12374623/

10-11 20:20