作者AIGecko (壁虎貓耳控)
看板Ruby
標題[問題] require後class沒有定義
時間Fri Jun 8 00:26:35 2012
環境: Ruby 1.9.3
狀況:
我把類別拆開裝入其他檔案中
要使用時再從
Main.rbw中
require
可是出現了這樣的錯誤:
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可能沒有全域化
可是我還
require了
win32api
我就打開
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
1F:推 mars90226:建議你把Conf.new改成::Conf.new,強制回到原本的 06/08 01:09
2F:→ mars90226:namespace,這樣不會說Game::Conf未定義了 06/08 01:10
3F:→ AIGecko:我把Main中的改成::Conf.new 結果變成未初始化常數Conf 06/08 12:55
4F:→ AIGecko:把conf中的Conf也改成::Conf也是未初始化常數Conf 06/08 12:57
5F:→ AIGecko:難道Win32API用了什麼技倆嗎... 06/08 13:26
6F:推 mars90226:話說應該是#encoding: utf-8吧? 06/08 17:04