如何确定F#中的类型?

时间:2018-09-30 19:22:28

标签: f#

在Python中,我可以通过键入以下内容查看变量的类型:

>>> i = 123
>>> type(i)
<type 'int'>

在F#中有没有办法做到这一点?

2 个答案:

答案 0 :(得分:7)

如果要在F#Interactive中执行此操作,则只需要通过键入变量名称来评估变量(紧随其后的是;;和F#Interactive提示符下的任何其他表达式)。也就是说,如果您已经执行了let num = 123,则只需在F#Interactive提示符下键入num;;,就会看到以下内容:

val it : int = 123

val一词表示F#Interactive正在描述一个值。名称it是F#Interactive中的特殊名称,分配给最后求值的值。然后是冒号,值的类型(在这种情况下为int),等号,然后打印出值。

因此,要查看F#Interactive中变量的值类型,您要做的就是只键入该变量,然后键入;;。很简单。

答案 1 :(得分:6)

F#是.NET语言,在.NET中,所有类型都是System.Object的后代,它具有GetType方法:

let i = 123
let t = i.GetType()

话虽如此,我必须强烈敦促您不要依赖运行时类型信息,除调试或类似目的外。这样做会使您的程序难以维护,并且从长远来看会再次吸引您。

在Python中,您可以避免这种情况,因为Python始终是动态键入的,因此推迟到运行时再执行一次检查并没有真正的区别。但是F#是静态类型的,通过将类型推迟到运行时,就可以放弃编译器可以提供的任何支持。