【问题标题】:Undefined method in console?控制台中未定义的方法?
【发布时间】:2013-01-31 18:20:35
【问题描述】:

Codecademy 的另一个问题又来了:

提出了以下挑战。

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

接受单个字符串参数、名称和 返回一个字符串问候那个人。 (确保使用 return 和 不要使用 print 或 puts。)

by_three?采用单个整数参数、数字和 如果该数字可以被三整除,则返回 true,如果 不是。请记住,结束方法名是 Ruby 的最佳实践 生成带问号的布尔值。

我在 re: 中输入的代码是..

def greeter(name)
   return "Greet #{name}"
end

def by_three?(x)
   if x % 3==0
      returns true
   else
      return false
end

greeter("Brant")
by_three?(6)

控制台然后给我以下错误:

Did you define your greeter method?

好像我有。我错了吗?

【问题讨论】:

  • ps:我意识到标题应该是未定义的......对不起!
  • 你错过了by_three?的结尾
  • 另外,既然你有一个比较,你不需要 if: def by_three?(x); return x % 3 == 0; end 会做同样的事情
  • 感谢@JimDeville 照顾它。所以在一个布尔字符串中,第二行基本上说如果它是真的就返回它,否则返回假?
  • Ruby 默认返回最后一个表达式,因此如果您的最后一个表达式是布尔测试 (x % 3 == 0),则返回结果(truefalse)。 return 语句是多余的,但似乎您可能需要按照说明使用它。 tl;dr - if foo; return true; else; return false; end 总是可以压缩为 !!foo,或者如果你没有有一个布尔值,foonilfalse 以外的任何东西都是认为是真的)

标签: ruby


【解决方案1】:

就是这样:

def greeter(name)
  "Greet #{name}"
end

def by_three?(x)
  x % 3 == 0
end

greeter("Brant") # => "Greet Brant"
by_three?(6) # => true

【讨论】:

    【解决方案2】:

    看起来您没有在 else 语句后添加“end”。给你。

    #For the greeter method, i decided to use this format
    
    def greeter(name)
        return name
    end
    
    greeter("Hello Jane, good morning")
    
    def by_three?(number)
        if number % 3 != 1
        return true
        else
            return false
        end #Add end here to end your statement
    end
    
    by_three?(5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多