Ruby 具有限制的方法语法未运行
我正在使用codecademy学习Ruby,当前的练习告诉用户: 在编辑器中定义两种方法: 一种Ruby 具有限制的方法语法未运行,ruby,methods,syntax-error,Ruby,Methods,Syntax Error,我正在使用codecademy学习Ruby,当前的练习告诉用户: 在编辑器中定义两种方法: 一种greeter方法,它接受单个字符串参数name,并返回一个字符串来问候此人。(请确保使用return,不要使用print或puts。) 一种采用单个整数参数number的by\u three?方法,如果该数可被3整除,则返回true;否则返回false。记住,用问号结束产生布尔值的方法名是Ruby的最佳实践 基于这一点,我提出了一些代码,但它不起作用,我不知道如何修复它或我缺少什么。我们非常感谢任何
greeter
方法,它接受单个字符串参数name,并返回一个字符串来问候此人。(请确保使用return,不要使用print或puts。)
一种采用单个整数参数number的by\u three?
方法,如果该数可被3整除,则返回true;否则返回false。记住,用问号结束产生布尔值的方法名是Ruby的最佳实践
基于这一点,我提出了一些代码,但它不起作用,我不知道如何修复它或我缺少什么。我们非常感谢任何朝着正确方向的努力!这是我的密码:
def greeter (name)
name = gets.chomp
return "Hi there #{name} sucka!"
end
def by_three(number)
number = gets.chomp
if number % 3 == 0
return true
else return false
end
您忘了将数字转换为整数,这就是代码不起作用的原因。考虑以下情况:
def greeter(name)
"Hi there #{name}!"
end
def by_three?(number)
number % 3 == 0
end
您可以在irb
中检查这些:
1.9.3p327 :010 > greeter 'joe'
=> "Hi there joe!"
1.9.3p327 :011 > by_three? 9
=> true
1.9.3p327 :012 > by_three? 10
=> false
注意事项:
在ruby
中,除非绝对必要,否则通常不使用return
,因为在方法中执行的最后一个表达式的结果会自动作为方法的值返回
另外,我对您正在处理的问题的解释似乎希望您的方法获取参数,因此我删除了要从标准输入读取的get
调用,而希望这些方法对传递给它的参数进行操作。(虽然我对代码学院问题的理解肯定是错误的。)def by_三?(数字)
如果!数
number=get.chomp
结束
如果(“”
这可能会有帮助,谢谢!这很有帮助!看起来我把它复杂了一点。说得好。这不是练习的重点,但我以后会记住的!谢谢!
1.9.3p327 :010 > greeter 'joe'
=> "Hi there joe!"
1.9.3p327 :011 > by_three? 9
=> true
1.9.3p327 :012 > by_three? 10
=> false
def by_three?(number)
if !number
number = gets.chomp
end
if ("" << number.to_s) =~ /^(\d)+$/
number.to_i % 3 == 0
else
false
end
end
def greeter(name)
return ("greeting " + name)
end
greeter("rahul")
def by_three?(number, i)
if number % 3 == i
i % 2 == 0
return "true"
else
return "false"
end
end
by_three?(12,1)