heute habe ich in D-Mailing-Liste gefragt, ob es möglich ist, benutzerdefinierte Datentypen auf ähnliche Weise wie z. Beispiel aus Adas wiki Seite:Ada-ähnliche Typen in Nimrod
type Day_type is range 1 .. 31;
type Month_type is range 1 .. 12;
type Year_type is range 1800 .. 2100;
type Hours is mod 24;
type Weekday is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
type Date is
record
Day : Day_type;
Month : Month_type;
Year : Year_type;
end record;
subtype Working_Hours is Hours range 0 .. 12;
subtype Working_Day is Weekday range Monday .. Friday;
Work_Load: constant array(Working_Day) of Working_Hours
:= (Friday => 6, Monday => 4, others => 10);
und die reply demonstriert so etwas wie:
import std.typecons;
import std.exception;
struct Limited(T, T lower, T upper)
{
T _t;
mixin Proxy!_t; //Limited acts as T (almost)
invariant()
{
enforce(_t >= lower && _t <= upper);
}
this(T t)
{
_t = t;
}
}
auto limited(T, T lower, T upper)(T init = T.init)
{
return Limited!(T, lower, upper)(init);
}
unittest
{
enum l = [-4,9];
auto a = limited!(int, l[0], l[1])();
foreach(i; l[0] .. l[1]+1)
{
a = i;
}
assertThrown({a = -5;}());
assertThrown({a = 10;}());
}
, die es möglich ist zeigt, aber wahrscheinlich verfehlt Adas Eleganz.
Nun, nachdem ich vor kurzem über Nimrod gelesen habe, frage ich mich, wie es ähnliche Aufgabe mit der Bereitstellung, die gleiche Ada-Typ-Sicherheit zu gewährleisten, umgehen kann?
Danke. Araq hat auch auf #ada gepostet, wo wir wenig diskutiert haben. Ich war mir nicht bewusst, dass Nimrod so elegant wie Ada ist und ziemlich glücklich darüber, aber ich glaube, dass ein Mangel an GUI-Bindungen mich mit Ada halten wird. – gour
Nun, Ada ist nicht wirklich für seine Grafikbindungen bekannt. (Obwohl ich über [das] (http://people.cs.kuleuven.be/~dirk/ada-why2.html) gestolpert bin, was darauf hinweist, dass * einige gute/einfach zu benutzende existierende Pakete sind.) Aber , hoffentlich wird es ein wenig Arbeit geben, Dinge zu korrigieren und ein Gutes. offenes, plattformunabhängiges GUI-Paket wird folgen. (Ich halte bloße Bindungen nicht für qualifizierend.) – Shark8