【问题标题】:`<main>': uninitialized constant Rabbit (NameError)`<main>': 未初始化的常量 Rabbit (NameError)
【发布时间】:2014-12-18 02:14:23
【问题描述】:

我在同一个目录中有两个文件 rabbit.rb 和 main01.rb,当我运行 main01.rb 时,我收到此错误消息 `': 未初始化的常量 Rabbit (NameError)
我做错什么了?感谢您的帮助。

兔子.rb

class Rabbit
  attr_accessor :name
  attr_reader :color, :length_of_ears

  def initialize(name: "usachan", color: :white, length_of_ears: 10)
    @name = name
    @color = color
    @length_of_ears = length_of_ears
  end

  def jump
    puts "pyon! pyon!"
  end

  def pound_steamed_rice_into_rice_cake
    puts "pettan! pettan!"
  end

  def say_name
    puts "Hello, I'm #{name}!"
  end
end

main01.rb

require_relative "rabbit"

rabbits = []

rabbits.push(Rabbit.new)
rabbits.push(Rabbit.new(name: "pyonkichi"))
rabbits.push(Rabbit.new(name: "inaba", color: :brown, length_of_ears: 7))

rabbits.each do |rabbit|
  puts rabbit.name
  puts rabbit.color
  puts rabbit.length_of_ears
  rabbit.say_name
  puts ""
end

rabbit[0].name = "wooser"
puts rabbit[0].name

【问题讨论】:

  • 我不知道你是怎么得到你的错误消息的。您的代码的最后两行有错字。将rabbit[0] 更改为rabbits[0]。你用的是什么 ruby​​ 版本?

标签: ruby class


【解决方案1】:

您可以使用require "./rabbit" 代替require_relative "rabbit"

您还引用了main01.rb 末尾的变量名错误的数组。试试:

rabbits[0].name = "wooser"
puts rabbits[0].name

【讨论】:

  • 没错,但错误是“未初始化的常量兔子”,而不是“未初始化的变量兔子”。
  • @Adrian 修正错字后,代码不会出现uninitialized constant Rabbit 错误..
  • 是的,但即使有错字,代码也不会出现该错误。
  • 我修正了错字,但仍然出现同样的错误:`
    ': uninitialized constant Rabbit (NameError)
  • 我刚刚发现我在两个不同的位置有 2 个 rabbit.rb 文件,我一直将上面的一个保存在错误的位置:// 它终于可以工作了。谢谢大家这么快的回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 2016-06-12
相关资源
最近更新 更多