0
我想要求用户输入一个变量并检查它是实数还是整数,并针对相应的操作采取两种不同的操作。如果整数,则为true否则为false;检查输入是否为整数
fun realorinteger(n)= if n = int then true else false;
但它绝对不行。我也尝试了如果n在int中。
任何帮助?
我想要求用户输入一个变量并检查它是实数还是整数,并针对相应的操作采取两种不同的操作。如果整数,则为true否则为false;检查输入是否为整数
fun realorinteger(n)= if n = int then true else false;
但它绝对不行。我也尝试了如果n在int中。
任何帮助?
你不能这样做。
该类型系统根本不允许一个函数采用多种不同的类型,并根据它的类型采取行动。您的功能要么需要int
,要么需要real
。 (或者它需要两个,但也可以采取string
S,list
S,等等即是多态)
你可以伪造它通过使数据类型,它封装值即可以是整数或实数,如所以:
datatype intorreal = IVal of int | RVal of real
然后可以使用模式匹配对这样的值,以提取所需的数字:
fun realorinteger (IVal i) = ... (* integer case here *)
| realorinteger (RVal r) = ... (* real case here *)
这个函数将然后有类型intorreal -> x
,其中x
是右击的类型双手表情。请注意,这两种情况下的结果值必须是相同的类型。
这种函数的一个例子可以是一个舍入函数:
fun round (IVal i) = i
| round (RVal r) = Real.round r
然后这被称为像这样:
val roundedInt = round (IVal 6);
val roundedReal = round (RVal 87.2);