F# &引用;“做”;在;执行申请。运行(表格)“;句子

F# &引用;“做”;在;执行申请。运行(表格)“;句子,f#,F#,两者的区别是什么 do Application.Run(form) 简单地说: Application.Run(form) ? 在第一句话中,do关键字的作用是什么?我认为这只是一种拖延——就像你仍然可以调用一个子集或设置一个变量,而不是直接做这些事情,如: SET varname = 5 CALL mysub() 与公正相比: varname = 5 mysub() 换句话说,我认为这无关紧要,编译器只是丢弃了它。在早期的一些版本中,在语言的许多地方,“do”是一个必需的关键字,而现在

两者的区别是什么

do Application.Run(form)
简单地说:

Application.Run(form) ?

在第一句话中,
do
关键字的作用是什么?

我认为这只是一种拖延——就像你仍然可以调用一个子集或设置一个变量,而不是直接做这些事情,如:

SET varname = 5
CALL mysub()
与公正相比:

varname = 5
mysub()

换句话说,我认为这无关紧要,编译器只是丢弃了它。

在早期的一些版本中,在语言的许多地方,“do”是一个必需的关键字,而现在您很少需要“do”。我能想到的其他例外情况是,“do”仍然是循环语法的一部分(例如,“while e1 do e2”),如果您想在启动方法上放置程序集级属性或属性,可以将该属性放在模块中最终代码块的显式“do”之前。在F#样本中经常会看到

[<STAThread>]
do Application.Run(form)
[]
执行应用程序运行(表单)

作为文件的最后两行,我认为仍然需要“do”才能将属性附加到它上面的行上。

很有趣,但是您知道它是什么吗?它不像F#是一种古老的语言,作为一种完全的猜测,作为带有副作用的表达式的标记,如Haskell@Bob:F#已经存在了几年,最初是作为微软研究院的一个项目。在这段时间里,该语言发生了一些变化/简化。啊-它似乎是早期版本的编译器遗留下来的,并且只是一些其他语言中的通用编程语法,所以它可能只是为了便于阅读。更不用说它是OCaml compat/history了?