2010-12-23 9 views
1

Ich bin verwirrt von der Möglichkeit, .NET in dynamischen Sprachen wie (Iron) Ruby zu schreiben. Insbesondere habe ich Code in IronRuby gesehen, der Generics verwendet (...foo[String]), aber ich bin mir dieser Funktion in Ruby nicht bewusst, da es für mich in dynamischen Sprachen Unsinn ist..NET in dynamischer Sprache schreiben?

Also, wenn ich .NET App in IronRuby schreibe, wie ist es mit Typ Sicherheit und Kompilierung? Ich dachte, dass es überall genauso dynamisch ist wie Ruby. Ich dachte, wenn die Ruby-Syntax OK ist, würde die Typüberprüfung zur Laufzeit erfolgen.

Auch, soweit ich weiß, ist .NET selbst typorientiert - es gibt Klassen, die die genannten Generika stark nutzen. Wie wird damit umgegangen?

Und was ist mit Delegierten? In dynamischen Sprachen kann ich fast Funktions-Spaghetti haben und manchmal ist es einfach in Ordnung (wie Hacken UI in Javascript).

Oder muss ich mich sogar um generische Delegierte kümmern?

+0

Sie schreiben den Code wie Sie in normalen Ruby. Obwohl ich denke, Sie können keine nativen Erweiterungen (geschrieben auf C) verwenden. Jedenfalls schrieb ich ein großes Skript, das auf IronRuby abzielte. Dann wechselte ich ohne Änderungen zu normalem Ruby 1.9. Mit dem einzigen Unterschied: Ruby 1.9 startet 10 mal schneller :) – Alexey

Antwort

1

Beachten Sie, dass auch Sprachen wie C# und VB .NET jetzt sind (optional) dynamisch zB statt

string strongTypedReference = "Hello"; 

Seit 4 .NET können Sie jetzt auch tun:

dynamic dynamicReference = "Hello"; 

Deshalb :

Also ja, mit dynamischen, überprüft der Compiler nicht Auflösung von Methodenaufrufen, Eigentum Accessoren etc. zur Kompilierzeit, aber zur Laufzeit. Dies gilt für alle Sprachen, die dynamisches Tippen in .NET, z. IronRuby, IronPython, C#, VB usw.