gpt4 book ai didi

f# - 高优先级应用程序表达式作为参数

转载 作者:行者123 更新时间:2023-12-02 02:22:21 24 4
gpt4 key购买 nike

一个高优先级的应用程序表达式是一个标识符紧跟在一个没有中间空格的左括号之后的表达式,例如,f(g)。将这些作为函数参数传递时需要括号:func (f(g))

Section 15.2 of the spec声明语法和优先规则允许未加括号的形式 -- func f(g) -- 但额外的检查阻止了这种情况。

为什么这是有意禁止的?它将避免使用过多的括号和管道,并且通常会使代码更简洁。

一个常见的例子是

raise <| IndexOutOfRangeException()

raise (IndexOutOfRangeException())

可以变得简单

raise IndexOutOfRangeException()

最佳答案

我同意需要写额外的括号有点烦人。我认为不允许省略它们的主要原因是添加空格会以相当重要的方式改变代码的含义:

// Call 'foo' with the result of 'bar()' as an argument
foo bar()

// Call 'foo' with 'bar' as the first argument and '()' as the second
foo bar ()

仍然存在一些粗糙的边缘,其中添加括号会改变评估(参见 form post ),但这“只是”改变了评估顺序。这将改变您的代码的含义!

关于f# - 高优先级应用程序表达式作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556982/

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