hôm nay tôi đã yêu cầu trong danh sách gửi thư D cho dù có thể xác định và sử dụng các loại dữ liệu tùy chỉnh theo cách tương tự như ví dụ: ví dụ từ trang wiki Ada:Các loại giống Ada ở 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);
và reply chứng minh một cái gì đó như:
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;}());
}
trong đó cho thấy nó có thể, nhưng có lẽ nhớ tao nhã Ada.
Bây giờ, sau khi đọc về Nimrod gần đây, tôi tự hỏi làm thế nào nó có thể xử lý nhiệm vụ tương tự với quy định để đảm bảo cùng loại an toàn của Ada?
Cảm ơn bạn. Araq cũng được đăng trên #ada, nơi chúng tôi đã thảo luận rất ít. Tôi đã không nhận thức được rằng Nimrod làm điều đó một cách tao nhã như Ada và khá hạnh phúc về nó, nhưng tôi tin rằng thiếu sự ràng buộc GUI sẽ giữ tôi với Ada. – gour
Vâng, Ada không thực sự nổi tiếng về các ràng buộc đồ họa của nó. (Mặc dù tôi đã chạy qua [this] (http://people.cs.kuleuven.be/~dirk/ada-why2.html), cho biết * có * một số gói mở rộng tốt/dễ sử dụng.) Nhưng , hy vọng sẽ có một chút công việc để sửa chữa mọi thứ và một điều tốt. mở, nền tảng độc lập GUI-gói sẽ được sắp tới. (Tôi không xem xét các ràng buộc chỉ là đủ điều kiện.) – Shark8