[問題] require後class沒有定義

看板Ruby作者 (壁虎貓耳控)時間12年前 (2012/06/08 00:26), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/2 (看更多)
環境: Ruby 1.9.3 狀況: 我把類別拆開裝入其他檔案中 要使用時再從Main.rbwrequire 可是出現了這樣的錯誤: C:\RB\Game>ruby main.rbw main.rbw:11:in `initialize': uninitialized constant Game::Conf (NameError) from main.rbw:97:in `new' from main.rbw:97:in `<main>' Main.rbw裡面出問題的是這段: #coding: utf-8 require_relative 'src/conf.rb' class Game def initialize @config=Conf.new #底下沒事... end #也沒事 end 而conf.rb是這樣子 #coding: utf-8 class Conf #定義方法 end 我本來想說class可能沒有全域化 可是我還requirewin32api 我就打開win32api研究 裡面長這樣: # -*- ruby -*- # for backward compatibility warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: Win32API is deprecated after Ruby 1.9.1; use dl directly instead" if $VERBOSE require 'dl' class Win32API #定義常數和方法 end 可是我卻可以直使用Win32API.new 這是怎麼回事? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.232.135.34

06/08 01:09, , 1F
建議你把Conf.new改成::Conf.new,強制回到原本的
06/08 01:09, 1F

06/08 01:10, , 2F
namespace,這樣不會說Game::Conf未定義了
06/08 01:10, 2F

06/08 12:55, , 3F
我把Main中的改成::Conf.new 結果變成未初始化常數Conf
06/08 12:55, 3F

06/08 12:57, , 4F
把conf中的Conf也改成::Conf也是未初始化常數Conf
06/08 12:57, 4F

06/08 13:26, , 5F
難道Win32API用了什麼技倆嗎...
06/08 13:26, 5F

06/08 17:04, , 6F
話說應該是#encoding: utf-8吧?
06/08 17:04, 6F
文章代碼(AID): #1FqDO-5Y (Ruby)
文章代碼(AID): #1FqDO-5Y (Ruby)