我在这些简单的Ruby测试中一直都是假的:
def large(string)
if string.size > 20
puts string.upcase!
else
puts string
end
end
试验:
p large("Hola vamos a la comida") == "HOLA VAMOS A LA COMIDA"
p large("Es hora de dormir") == "Es hora de dormir"
使它们有效需要什么?
答案 0 :(得分:4)
puts
打印其参数,但返回值始终为nil
:
> val = (puts "Hello World")
Hello World
=> nil
> val
=> nil
在您的代码中,large
的返回值始终为零,因此与string
的比较始终返回false
。
这可能更接近你想要的东西:
def large(string)
if string.size > 20
string.upcase!
else
string
end
end
答案 1 :(得分:0)
puts
在屏幕上打印并返回nil
。 Ruby中的nil
和false
在布尔上下文中是false
。其他一切都是true
。因此,您的方法large
会返回nil
。你应该像这样写
def large(string)
if string.size > 20
string.upcase!
else
string
end
end
更好的方法是
def large(string)
string.size > 20 ? string.upcase : string
end