2010-12-23 17 views
1

私は、(Iron)Rubyのような動的言語で.NETを書く可能性に混乱しています。特に、IronRubyのジェネリックス(...foo[String])を使用したコードを見たことがありますが、Rubyのこの機能は動的言語ではナンセンスだと認識していません。.NETを動的言語で記述していますか?

したがって、IronRubyで.NETアプリケーションを作成すると、タイプの安全性とコンパイルはどのようになっていますか? Rubyと同じくらいダイナミックであると思いました。私は、Rubyの構文がOKならば、すべての型チェックが実行時に行われると考えました。

また、私が知る限り、.NET自体は型指向です。言及したジェネリックを大量に使用するクラスがあります。これはどのように処理されますか?

代議員はどうですか?動的言語では、私はほぼ機能的なスパゲティを持つことができ、時には、ちょうどいい(JavaScriptのUIをハッキングしているような)。

また、一般的な代議員についても気にする必要がありますか?

dynamic dynamicReference = "Hello"; 

したがって:C#やVB .NETのようにも言語はあなたが今も行うことができます代わりに、.NET 4以来

string strongTypedReference = "Hello"; 

の(オプション)ダイナミック例えば今の心の中で

+0

通常のRubyと同じようにコードを記述します。私はネイティブエクステンション(C言語で書かれています)は使用できません。とにかく、IronRubyをターゲットにqutie大きなスクリプトを書いていました。その後、私は通常のRuby 1.9に変更を加えずに切り替えました。唯一の違いがあります:Ruby 1.9は10倍速く始まります:) – Alexey

答えて

1

ベアを:

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など

関連する問題