将Perl转换为Ruby – 模块与类
发布时间:2020-12-16 06:15:50 所属栏目:大数据 来源:网络整理
导读:Perl中的命名空间非常简单,但我似乎无法找到将这个非常简单的Perl类层次结构转换为 Ruby的解决方案. Perl的 LIB / Foo.pm package Foo;use Foo::Bar;sub bar { return Foo::Bar-new()} LIB /富/ Bar.pm package Foo::Barsub baz {} main.pl use Foo;my $foo
Perl中的命名空间非常简单,但我似乎无法找到将这个非常简单的Perl类层次结构转换为
Ruby的解决方案.
Perl的 LIB / Foo.pm package Foo; use Foo::Bar; sub bar { return Foo::Bar->new() } LIB /富/ Bar.pm package Foo::Bar sub baz {} main.pl use Foo; my $foo = Foo->new(); my $bar = $foo->bar(); $bar->baz() ruby 模块无法实例化,因此这段代码显然不起作用: LIB / foo.rb require 'foo/bar.rb' module Foo def bar Foo::Bar.new end end LIB /富/ bar.rb module Foo class Bar def baz end end end main.rb的 require 'lib/foo.rb' foo = Foo.new bar = foo.bar bar.baz 但是尝试将Foo声明为类而不是也不起作用,因为已经有一个名称的模块: lib/foo.rb:3:in `<top (required)>': Foo is not a class (TypeError) 所以我最终得到: LIB / foo.rb module Foo class Foo ... end end main.rb的 foo = Foo::Foo.new 这不是我想要的.我觉得我错过了一些非常基本的东西. :)感谢您对此有所了解. 解决方法
在Ruby中,模块和类都可用于提供命名空间分离.事实上,Class是Module的子类,大多数事情都可以用Module做,你也可以用Class做
如果Foo需要是一个类,请将其声明为类,不要将其声明为模块. 例如. LIB / foo.rb require 'foo/bar.rb' class Foo def bar Foo::Bar.new end end LIB /富/ bar.rb class Foo class Bar def baz end end end main.rb的 require 'lib/foo.rb' foo = Foo.new bar = foo.bar bar.baz (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |