作者rexkimta (冷杉林)
看板Ruby
标题[问题] 同个module里引用class
时间Mon Dec 23 22:07:09 2013
大家好,我日前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)
1F:→ 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)
2F:→ ck574b027:严格说起来应该算 interpreter 的特性。 12/25 21:02
3F:→ danny8376:除了Javascript比较特别会先整个解析过 大多数直译都是 12/26 00:24
4F:→ danny8376:如此吧 一般直译都是由前往後 12/26 00:25