Ruby中的NameError

S4M*_*S4M 21 ruby class

对于这段代码:

class myBaseClass
  def funcTest()
    puts "baseClass"
  end
end
myBaseClass.new.funcTest
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

NameError: undefined local variable or method `myBaseClass' for main:Object
from c:/Users/Yurt/Documents/ruby/polymorphismTest.rb:9
from (irb):145:in `eval'
from (irb):145
from c:/Ruby192/bin/irb:12:in `<main>'
irb(main):152:0> x=myBaseClass.new
Run Code Online (Sandbox Code Playgroud)

当我尝试时x=myBaseClass.new,我得到:

NameError: undefined local variable or method `myBaseClass' for main:Object from (irb):152
Run Code Online (Sandbox Code Playgroud)

有人已经遇到过这个问题吗?我不认为我的代码可能是错的.

edg*_*ner 50

在ruby中,包括类名在内的所有常量必须以大写字母开头.myBaseClass将被解释为未定义的局部变量.MyBaseClass会正常工作.

  • 有趣的是,你被允许这样做:`class Foo; 结束; f = Foo; f.new` (7认同)
  • 那是因为一个类是一个对象,可以分配给一个变量.您可以定义和使用类,而无需将其赋值给常量:`f = Class.new; f.new`给你一个驻留在局部变量`f`中的未命名类的实例 (4认同)

Ste*_*eve 5

你的类名应该以大写开头,下面的工作代码

class MyBaseClass
  def funcTest()
   puts "baseClass"
 end
end



MyBaseClass.new.funcTest
Run Code Online (Sandbox Code Playgroud)