设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2878|回复: 6
打印 上一主题 下一主题

[胡扯] 不是很懂这个NameError

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1934
在线时间
403 小时
注册时间
2015-8-30
帖子
395
跳转到指定楼层
1
发表于 2018-9-8 21:46:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

图中是2.5.1的Ruby的IRB
照道理说,class << Math的内部应该是Math模块的单例类,
在这个单例类中定义的实例方法内部,主调默认应该是Math这个模块
因此应该可以访问Math命名空间内的东西
但为啥Ruby在找PI这个常量的时候到#<Class:Math>找去了?
小仙女一枚~

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39665
在线时间
7484 小时
注册时间
2009-7-6
帖子
13483

开拓者贵宾

2
发表于 2018-9-8 23:15:07 | 只看该作者
你都知道定义的实例方法了……Math的实例和Math模块不是一个玩意儿(x
越讲越怪,建议看源码。

点评

Math和Math.singleton_class的实例是一个玩意  发表于 2018-9-9 14:59
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
33407
在线时间
6552 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

3
发表于 2018-9-8 23:57:34 | 只看该作者
math模块里的类不包括模块的常量
改成Math::PI试试?

点评

这不叫Math模块“里的类”,是Math模块的单例类,而且调用常数的地方在实例方法内部……这正是它访问不到Math::PI的奇怪之处  发表于 2018-9-9 15:00
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6886
在线时间
7027 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

4
发表于 2018-9-9 00:17:01 | 只看该作者
本帖最后由 RaidenInfinity 于 2018-9-9 00:23 编辑

self::PI         
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4583
在线时间
1205 小时
注册时间
2016-4-7
帖子
982

开拓者

5
发表于 2018-9-9 18:22:10 | 只看该作者
https://ruby-china.org/topics/28696
最后我想指出,你在一个class的singleton里是无法访问在class内定义的常量。

class A
  module B; end
end
class << A
  B
end
# NameError: uninitialized constant Class::B
这是因为singleton class的祖先链中并不包含自身的class,直接从Class开始。

评分

参与人数 1+1 收起 理由
有丘直方 + 1 认可答案

查看全部评分

附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 07:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表