试图找出我收到此错误的原因。
具有If / Else语句的方法不需要结束语句?
另外,不知何故格式化都搞砸了。试了好几分钟来解决。不知道我哪里出错了?
def greeter(name)
puts "Hello #{name}!!"
end
def by_three?(num)
if num % 3 == 0
puts true
else
puts false
def age(n)
if n < 30
puts "You are younger than 30!"
else
puts "You are older than 30!"
puts "Enter your name"
your_name = gets.chomp
puts "Enter your age"
yourage = gets.chomp
by_three?(3)
greeter(your_name)
age(your_age)
答案 0 :(得分:2)
def
和if
都应该以{{1}}:
end
以def by_three?(num)
if num % 3 == 0
puts true
else
puts false
end
end
结尾的Ruby方法应该返回一个布尔值。
您的?
只显示by_three?
或true
,但会返回nil。
false
您可以删除看跌期权:
by_three?(5)
# false
# => nil
但是,你的if语句变得多余,也可以删除:
def by_three?(num)
if num % 3 == 0
true
else
false
end
end
puts by_three?(3)
# true
# => nil
by_three?(5)
# => false
答案 1 :(得分:0)
正确的写作方式是:
def by_three?(num)
if num % 3 == 0
puts true
else
puts false
end # if needs an end
end #def also needs an end
答案 2 :(得分:0)
与您的版本比较:
def greeter(name)
puts "Hello #{name}!!"
end
def by_three?(num) num % 3 == 0 ? true : false end
def age(n)
if n.to_f < 30
puts "You are younger than 30!"
else puts "You are older than 30!"
end
end
请注意我已在to_f
中将n
添加到age
,因为它会在保留为字符串时失败,因为chomp
会返回字符串而您无法隐式比较string
和integer
。