当前位置:  开发笔记 > 编程语言 > 正文

空间改变类型?

如何解决《空间改变类型?》经验,为你挑选了1个好方法。

我用扩展名Ionide-fsharp输入了以下代码,其类型为 int -> int -> int -> int

let test a b c = a / b + c

但是,如果我之前删除空格 c

let test a b c = a / b +c
let test a b c = a/b +c

类型变为int -> (int -> int) -> int -> int

但是,以下表达式将获得原始类型。

let test a b c = a/b+c

Visual Studio得到了相同的结果。似乎+c被视为c在F#表达式中。



1> Fyodor Soiki..:

是的,您的假设是正确的:术语前面没有空格的加号被视为一元运算符,而不是二进制运算符。顺便说一句,减号也会发生同样的情况。

确定后,只有一种方法可以解释其余部分:b +c必须是函数b对参数的应用+c,因此b必须是采用的函数int。此应用程序的结果在除法中用作分母,因此它也必须具有类型int。因此,b必须是int -> int

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有