2009-12-03 55 views
4

在過去幾個月中我一直在使用Ruby,但有一件事我還沒弄清楚,C#的(和其他語言)using語句的Ruby等價物是。C#'使用'語句的Ruby等價物

我一直在使用require聲明來聲明我對Gems的依賴關係,但是我越來越懶,並且寧願不完全限定我的常用類名與他們的模塊(名稱空間)名稱。

當然這是可能的,對嗎?我不能使用正確的術語,因爲谷歌沒有給我任何有用的東西。

+0

我認爲你是對 使用VAR1 =問System.Collections中; 基本上爲命名空間創建一個別名,以便可以使用var1來代替它。我對嗎? – 2009-12-03 05:14:24

+0

我的不好,我甚至沒有考慮'使用'的別名用法......甚至沒有考慮'使用'的處置代碼塊功能...... geeh,C#肯定喜歡'使用'關鍵字。 – 2009-12-03 05:26:42

+0

抱歉誤會。我現在明白了,你想在你的代碼中包含一個庫。 – 2009-12-03 11:18:15

回答

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

OTOH,如果問題僅僅是走樣的類名,認爲,像他們說的「類是對象,對象是類」。

所以:

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

是,在Ruby中的類名,就像任何其他以Class類的一個對象的引用。

+0

謝謝! 'include'關鍵字就是我以前的樣子。 – 2009-12-03 05:39:12

1

我不相信有一個直接的語法映射。您可以近似它,因爲您可以將變量引用分配給幾乎所有的東西,包括模塊和類。

module UsingExampleNamespace 
    module SubExampleNamespace 
     CON = "STANT" 
    end 
end 

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