java int maxvalue_.net – F#int.MaxValue是“不是有效的常量表达式”,但System.Int32.MaxValue是?...

这就是F#类型推论在不同上下文中的工作原理,其中不同的句法实体巧合地具有相同的名称,如果int可能是以下任何一种:

> function int:’T> int的全名为Microsoft.FSharp.Core.Operators.int

>键入int = int32的全名Microsoft.FSharp.Core.int

> type int&”Measure> =全名为Microsoft.FSharp.Core.int< _>

演示此工作的一种方法将是以下情况:如果我们刚刚输入

int;;

在FSI中,我们会得到类似的东西

val it : (int -> int) =

换句话说,它是一个不能与其相关联的MaxValue属性的函数:

> int.MaxValue;;

int.MaxValue;;

----^^^^^^^^

... error FS0039: The field,constructor or member 'MaxValue' is not defined

同样适用于int32,当在表达式的上下文中使用时,它被FSI推断为仅具有signature(int – > int32)的另一个函数.

现在谈到

type num = int

在这个上下文中,int被推断为System.Int32的类型名称缩写,所以num也是一个类型缩写,但是现在名称模糊性没有地方,所以num.MaxValue是我们期望的,我们期望的是在FSI

> num.MaxValue;;

val it : int = 2147483647

最后,当您使用Microsoft.FSharp.Core.int时,您明确地引用了类型实体,没有任何歧义的地方,因此它可以按预期工作.

返回到你的用例属性参数 – 在这个上下文中,int被类型推断作为表达式的一部分来处理,以提供参数值,即作为函数,除非你明确或间接设置另一个解释.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值