我正在建模一個Web應用程序,您可以通過單擊某個鏈接進入另一個應用程序頁面。我決定做這樣的事情:Ruby腳本中未初始化的常量錯誤
文件C:/Sandbox/common_page.rb
:
require_relative "./pageA"
require_relative "./pageB"
require_relative "./pageC"
require_relative "./pageD"
class CommonPage
def pageA
# click_pageA_link
pageA.new
end
def pageB
# click_pageB_link
pageB.new
end
def pageC
# click_pageC_link
pageC.new
end
def pageD
# click_pageD_link
pageD.new
end
# and so on for other pages..
end
文件C:/Sandbox/pageA.rb
:
require_relative "./common_page"
class PageA < CommonPage
def pageA
self
end
end
文件:
require_relative "./common_page"
class PageB < CommonPage
def pageB
self
end
end
相似的代碼會被顯示爲代表的類其他頁面。如果我運行文件C:/Sandbox/test.rb
與此代碼:
require_relative "./pageA"
pA = PageA.new
我得到這個錯誤:
C:/Sandbox/pageB.rb:2:in `<top (required)>': uninitialized constant CommonPage (NameError)
from C:/Sandbox/common_page.rb:2:in `require_relative'
from C:/Sandbox/common_page.rb:2:in `<top (required)>'
from C:/Sandbox/pageA.rb:1:in `require_relative'
from C:/Sandbox/pageA.rb:1:in `<top (required)>'
from C:/Sandbox/test.rb:1:in `require_relative'
from C:/Sandbox/test.rb:1:in `<main>'
類似的錯誤還彈出,當我嘗試創建其他類的實例。有人可以解釋這裏發生了什麼,以及如何避免這個問題?
這被稱爲「循環依賴」。 – 2013-04-27 14:48:31
@Sam謝謝你的解釋! 在我的設計中,我應該避免循環參考嗎?是否有另一種/更好的方式來實現我想要的? – tom 2013-04-27 15:37:55