2010-12-23 59 views
1

我對動態語言編寫.NET的可能性感到困惑,比如(Iron)Ruby。特別是,我在IronRuby中看到過使用泛型的代碼(...foo[String]),但我不知道Ruby中的這個特性,因爲在動態語言中我似乎是無稽之談。用動態語言編寫.NET?

因此,當我在IronRuby中編寫.NET應用程序時,它是如何與類型安全和編譯?我認爲它和其他地方的Ruby一樣動態。我認爲如果Ruby語法是OK的,所有的類型檢查都會在運行時完成。另外,據我所知,.NET本身是面向類型的 - 有很多類會大量使用所提到的泛型。這是如何處理的?

那麼代表呢?在動態語言中,我幾乎可以使用功能 - 意大利麪條,有時候,它就好了(就像在JavaScript中的黑客UI)。

或者我是否還要關心通用代表?

+0

你像在普通的Ruby中那樣編寫代碼。儘管如此,我認爲,你不能使用本地擴展(用C編寫)。無論如何,我正在寫針對IronRuby的qutie大腳本。然後我切換到普通的Ruby 1.9,沒有任何改變。唯一不同的是:Ruby 1.9啓動速度快了10倍:) – Alexey 2010-12-23 13:38:41

回答

1
記住

熊,即使如C#和VB .NET語言現在(可選)動態例如,而不是

string strongTypedReference = "Hello"; 

由於.NET 4,你現在也可以這樣做:

dynamic dynamicReference = "Hello"; 

因此:

strongTypedReference.Foo() // gives a compile-time error as expected. 
dynamicReference.Foo() // compiles, but will give a run-time error. 
dynamicReference.ToString() // compiles and binds to the correct call at run-time. 

所以是的,動態的,編譯器不檢查方法調用,屬性訪問器的解析等在編譯時,但在運行時代替。這適用於在.NET中提供動態輸入的所有語言。 IronRuby,IronPython,C#,VB等