2016-10-03 45 views

回答

4

答案,奇怪的是,没人管!至少不在Ruby的意义上。

Crystal docs使声称一切都是对象,但有轻微的欺骗,当谈到这些“顶级”的方法。

与红宝石,这使一切“顶级”到Kernel模块,晶体具有"Top Level Namespace",其中的方法,如putsgetsraise等生活的概念。

它似乎并不具有与其相关联的标识,所以你不能检查/反思它,找出存在的。

1

我知道这是一个有点老问题,但我刚开始与水晶玩耍。

在Ruby中,顶级对象名为main,是类Object的一个实例,并混合在Kernel模块中。

self 
#=> main 
self.class 
#=> Object 
self.class.ancestors 
#=> [Object, Kernel, BasicObject] 

在另一方面水晶顶级似乎是什么文件称之为“The Program”,但似乎没有办法以编程方式访问:在顶层评估self为您提供了错误"there's no self in this scope"。出于同样的原因,如果没有明确的接收方,您不能拨打inspect,因为它只会告诉您没有该名称的本地变量或方法。

我猜主要的提示是,“[顶级命名空间]”的文件2“列表中没有文件‘中定义的’部分通常列出了定义对象的类。

简而言之,似乎水晶开发商选择保持顶级无法访问,而不是稍显怪异object/class hybridmain是红宝石。

相关问题