[問題] 同個module裡引用class

看板Ruby作者 (冷杉林)時間11年前 (2013/12/23 22:07), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
大家好,我日前fork了一個專案並改寫了一下, 在某個地方碰到問題, https://github.com/Unicellular/reversi/blob/master/board.rb 在上面這個檔案裡可以看到,我使用了Reversi::Position這麼長的方式來調用這個class 因為如果只寫Position,程式會顯示「找不到Reversi::Board::Position」這個錯誤。 不過在instance method裡這樣用就沒有問題, 我想知道的是,為什麼會有這樣的差異?為什麼ruby會這樣設計? 有沒有方法可以不用寫這麼長? 原來的版本是在position.rb裡寫個pos function。 不過我覺得這樣好迂迴,希望是能在board.rb裡設定。 補充:我是用ruby 2.0.0 ==== 另外歡迎大家fork我的專案寫AI,會自我學習的更好XD -- ★ 辰星! 歡迎加入五行戰鬥牌的奇幻世界! 太白! 歲星! 官方網站:(內有討論區) 鎮星!熒惑! http://goo.gl/jC2sp 「當蒼茫天穹中 那並非最閃亮 PTT台大社版:NTU-CFE 但卻最純淨的五顆星 連成一線時, 天與地的共鳴 將永不止歇,其力量可至無限。」 ψrexkimta -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.161.118 ※ 編輯: rexkimta 來自: 114.36.161.118 (12/23 22:12)

12/24 07:00, , 1F
我自己是沒這問題啊? 你這錯誤哪來的?
12/24 07:00, 1F
剛剛自己試了一下,發現也神奇的可以,後來想到之前把這些class寫在同一個檔裡時, 也出現同一個錯誤,後來把Position放在Board之前就沒問題了, 所以把require_relative的順序調整了一下,果然又出現了。 `<class:Board>': uninitialized constant Reversi::Board::Position (NameError) 所以看起來是直譯式語言的特性,只會向前不會向後找? ※ 編輯: rexkimta 來自: 114.36.175.220 (12/24 07:26)

12/25 21:02, , 2F
嚴格說起來應該算 interpreter 的特性。
12/25 21:02, 2F

12/26 00:24, , 3F
除了Javascript比較特別會先整個解析過 大多數直譯都是
12/26 00:24, 3F

12/26 00:25, , 4F
如此吧 一般直譯都是由前往後
12/26 00:25, 4F
文章代碼(AID): #1Ik4EJfr (Ruby)
文章代碼(AID): #1Ik4EJfr (Ruby)