gpt4 book ai didi

f# - 在 f# 中调用函数时何时使用括号?

转载 作者:行者123 更新时间:2023-12-03 09:52:52 25 4
gpt4 key购买 nike

我正在学习 f# 并且我知道您在调用函数时不需要使用括号。

前任

let addOne arg1 =
arg1 + 1

addOne 1

对比
this.GetType()

为什么我必须在第二个函数上使用括号?

最佳答案

在参数方面,使用 .NET 库和使用 F# 库之间存在一些不匹配,但您通常可以看到 ()不是作为括号,而是作为 unit 类型的特殊值这意味着“没有有用的信息”。

这意味着当你说:

addOne 1

您调用 addOne带有值 - 数字 1 - 作为参数。现在,当您将相同的读数应用于第二个示例时:
this.GetType()

您可以将其解读为调用 this.GetType带有值 - 特殊 ()单位值作为参数。如果你想保持一致,你也可以用空格写:
this.GetType ()

实际上,大多数人在调用 .NET 库时会省略空格。当您不写空格时,F# 还支持方法链接,因此您可以编写例如 foo().bar() .

许多 F# 函数采用多个参数将使用“curried”形式,这意味着参数需要用空格分隔。例如:
let add a b = a + b
let mul a b = a * b

add 10 (mul 20 3)

在这里,您需要在第二个表达式周围加上括号,以便编译器知道如何解析代码。这与将参数作为元组的典型 .NET 方法形成对比。 F# 元组写成 (10, "hello")因此您可以将方法调用视为接受元组的普通调用:
some.Operation (10, "Hello")

同样,通常您不会在这里写空格,因为您知道这实际上是一个 .NET 方法调用,而不是“将元组传递给函数”,但从概念上讲,您可以用两种方式来考虑它。

这是总结——在一些极端情况下,方法调用的行为并不像元组那样(例如,当涉及到命名参数时),但这种思考方式应该让您了解事情是如何工作的。

关于f# - 在 f# 中调用函数时何时使用括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com