看板 Ruby 關於我們 聯絡資訊
環境: 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
mars90226:建議你把Conf.new改成::Conf.new,強制回到原本的 06/08 01:09
mars90226:namespace,這樣不會說Game::Conf未定義了 06/08 01:10
AIGecko:我把Main中的改成::Conf.new 結果變成未初始化常數Conf 06/08 12:55
AIGecko:把conf中的Conf也改成::Conf也是未初始化常數Conf 06/08 12:57
AIGecko:難道Win32API用了什麼技倆嗎... 06/08 13:26
mars90226:話說應該是#encoding: utf-8吧? 06/08 17:04