在Ruby中,当我们简单地定义一个方法时:
def test
puts "test!"
end
它成为一个全局对象上的方法(没有独立的函数),我们甚至可以:
^{pr2}$或者
^{3}$因为全球环境本身就是一个物体。。。在
这对Python和/或Perl有效吗?如果没有,可以模拟吗?在
我是个编译器爱好者。在
实际上,我正在尝试为这三种语言实现一个编译器,它们使用Objective-C运行时的名称空间版本。我试图弄清楚如何在另一种语言上访问用一种语言定义的方法/类/对象。类层次结构应该是完全不同的,但是如果全局定义的方法(如我在Ruby中所示)可以直接从另一个方法中进行透明的访问,这将非常有用,因此我试图找出Perl和Python与Ruby相比是如何处理这些事情的。对于这个问题,我也很感激你的建议。在
虽然这个问题也应该与其他人有关,但我相信/希望如此。:)
在perl中,内容将存储在包含包的符号表中(除main之外的所有包本身都包含在main的符号表中)。在
%main::是主包表。包表中的值通常是glob,但有时是其他的东西(例如forward声明的原型)。在
更新:我看到你现在在问题中描述了你的实际目标。在我看来你想读perlcall。{a2很难翻译}(除非你想用一个修改过的目标代码)开始编译。在
在Perl中,
UNIVERSAL
类是所有其他类的基础。在这通常是你想要避免的。在
如果您使用的是Moose对象系统,那么应该将该方法放在一个角色中,该角色将分配给应该具有该方法的类。在
Perl并不像Ruby那样是一种纯面向对象的语言。所以不是所有的东西都是对象,函数也不一定是方法。在
在Perl中,讨论包(大致相当于名称空间)更有意义。Perl5中没有全局变量;所有内容都属于一个包中。如果您不另外说,它将放在一个名为
main
的包中。在相关问题 更多 >
编程相关推荐