说在标准毫升定义多个数据类型:如何在标准ML中实现某种“可空”类型?
datatype color = orange | navy | teal | silver | hsl of real * real * real;
datatype direction = east | north | west | south;
我再定义使用上面的数据类型的值:
type Cursor = int * int * color * direction;
val cursor : Cursor = (0, 0, orange, east);
这是一个“光标”,有一个位置,绘制颜色,和一个方向。 我想要的是它的属性最初是undefined。我可以一个构造函数添加到每个color
和direction
数据类型(我会怎么做,与int
位置值?),如下所示:具有明确定义的附加undefined
datatype color = orange | teal | silver | hsl of real * real * real | undefined;
datatype direction = east | north | west | south | undefined;
val cursor : Cursor = (0, 0, undefined, undefined);
我想这样做没有每种数据类型的构造函数。你能想到一个好的,干净的解决方案吗?不管类型如何,我都可以简单地使用“未定义值”形式的某种形式的泛型。一个类似于Javas Nullable
,把它粗糙。
我的动机是我的游标属性最初是未定义的。
当然,我怎么会错过这个(已经阅读'选项')!谢谢,我会试着将这个结合起来,并将你的答案标记为正确答案:-) – amn