作者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