【发布时间】:2011-07-10 20:58:19
【问题描述】:
我试过了
module Program
{
Main() : void
{ mutable x : byte = 0B;
mutable y : byte = 0B;
x++;
//y = x + 1;
//y = x + 1B;
//def one:byte=1;// x = x + one;
}
}
无论我尝试哪一个,我都会收到以下错误消息。
错误 1 个预期字节,在分配的值中获得 int:System.Int32 不是 System.Byte [简单要求]的子类型
我发现唯一可行的方法是
y = ( x + 1 ):>byte
这有点花里胡哨,只是添加一个。
这是为什么?还有更好的(阅读更短的方法)吗?
【问题讨论】:
-
我不使用 nermerle,但这听起来像是一个“类型扩大”问题——
byte + int的返回类型是什么?byte + byte呢? C# 类似:byte x = 0; x = x + 1也不会编译。 (C# 实际上可以与x += 1和x++一起使用,但可能会在 nemerle 中扩展它们。) -
byte + int = int(int 是主要类型)。
byte + byte是 int 的意外返回类型