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的最佳实践 基于这一点,我提出了一些代码,但它不起作用,我不知道如何修复它或我缺少什么。我们非常感谢任何

我正在使用codecademy学习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)