0
所以這是我的第一個關於堆棧溢出的問題,我是Ruby的新手,所以如果這是一個簡單的問題,請很好。爲什麼Ruby在類B中看到`A.run`作爲常量而不是類?
我開始在OOP和製作遊戲。我認爲錯誤的是,Ruby認爲在當前課堂中不同的課程是不變的。
這裏是我的代碼:
./a.rb
require "./b"
class A
class << self
def run
puts "A ran."
end
end
end
./b.rb
class B
require './a'
def test
A.run
end
end
b = B.new
b.test
當我運行ruby b.rb
,我得到:
/Users/alexstriff/Dropbox/Code/ruby/ex45/b.rb:5:in `test': uninitialized constant B::A (NameError)
from /Users/alexstriff/Dropbox/Code/ruby/ex45/b.rb:11:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from /Users/alexstriff/Dropbox/Code/ruby/ex45/a.rb:1:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from b.rb:2:in `<class:B>'
from b.rb:1:in `<main>'
那麼爲什麼A.run
被class B
視爲常量,而不是作爲一個類?
編輯:
難道可能被 '圓形需要' 有問題嗎?我在ruby -w
下運行了這個,然後就出現了。
謝謝你的快速responce.I竟然出現了'require'那裏,似乎我忘了它會導致問題。 – jfjhh
@jfjhh沒問題,很高興你解決了這個問題! – jvperrin