Ruby中类似C# 'using'语句的等效方法是什么?

6
在过去的几个月里,我一直在学习Ruby。但有一件事情我还没有搞清楚,那就是Ruby中类似于C#(以及其他语言)using语句的等效语法。我使用require语句来声明依赖Gem,但我变得有些懒惰,不想用模块(命名空间)名完全限定我的常用类名。当然这是可能的,对吧?我可能没有使用正确的术语,因为谷歌没有给我任何有用的信息。

我认为你在询问关于使用var1=System.Collections的问题。基本上是为一个命名空间创建一个别名,以便可以使用var1代替它。我说得对吗? - Ashish Jain
我的错,我甚至没有考虑到“using”的别名用法...或者“using”的释放代码块功能...天啊,C#确实喜欢“using”关键字。 - Jason Whitehorn
抱歉误解了。我现在明白了,您想在您的代码中包含一个库。 - Ashish Jain
2个回答

6
>> Math::PI
=> 3.14159265358979
>> PI
NameError: uninitialized constant PI
    from (irb):3
>> include Math
=> Object
>> PI
=> 3.14159265358979

另一方面,如果问题只是别名类名,请考虑它们所说的"类是一个对象,而对象是一个类"。

因此:

>> require 'csv'
>> r = CSV::Reader
>> r.parse 'what,ever' do |e| p e end
["what", "ever"]

是的,在Ruby中,类名只是对Class对象的引用,就像其他任何对象一样。

谢谢!我需要的是 include 关键字。 - Jason Whitehorn

1

我不相信有直接的语法映射。你可能可以近似实现,因为你可以将变量引用分配给几乎所有东西,包括模块和类。

module UsingExampleNamespace
    module SubExampleNamespace
        CON = "STANT"
    end
end

sen = UsingExampleNamespace::SubExampleNamespace
puts sen::CON
>> "STANT"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接