方法没有运行限制的语法

时间:2013-05-04 02:40:45

标签: ruby methods syntax-error

我正在使用codecademy学习Ruby,当前练习告诉用户:

在编辑器中定义两个方法:

一个greeter方法,它接受一个字符串参数name,并返回一个问候该人的字符串。 (确保使用return并且不要使用print或puts。)

一个by_three?方法,它接受一个整数参数number,如果该数字可以被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

4 个答案:

答案 0 :(得分:1)

考虑这样的事情:

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,除非绝对必要,因为方法中执行的最后一个表达式的结果会自动返回为方法的值。

另外,我对你正在处理的问题的解释看起来好像你希望你的方法采用参数,所以我已经删除了gets调用以从标准输入读取,而是期望这些方法运行在传递给它的参数上。 (虽然我在阅读codeacademy问题时肯定是错的。)

答案 1 :(得分:0)

def by_three(number)
   number = gets.chomp
   if number.to_i % 3 == 0
      return true
   else return false
end

您忘记将数字转换为整数,这就是代码无效的原因。

答案 2 :(得分:0)

def by_three?(number)
    if !number
        number = gets.chomp
    end

    if ("" << number.to_s) =~ /^(\d)+$/
        number.to_i % 3 == 0
    else
        false
    end 
end

我认为这是一个很好的答案。

答案 3 :(得分:0)

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)

这可能会有所帮助