看板 Ruby 關於我們 聯絡資訊
大家好,我日前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)
danny8376:我自己是沒這問題啊? 你這錯誤哪來的? 12/24 07:00
剛剛自己試了一下,發現也神奇的可以,後來想到之前把這些class寫在同一個檔裡時, 也出現同一個錯誤,後來把Position放在Board之前就沒問題了, 所以把require_relative的順序調整了一下,果然又出現了。 `<class:Board>': uninitialized constant Reversi::Board::Position (NameError) 所以看起來是直譯式語言的特性,只會向前不會向後找? ※ 編輯: rexkimta 來自: 114.36.175.220 (12/24 07:26)
ck574b027:嚴格說起來應該算 interpreter 的特性。 12/25 21:02
danny8376:除了Javascript比較特別會先整個解析過 大多數直譯都是 12/26 00:24
danny8376:如此吧 一般直譯都是由前往後 12/26 00:25