gpt4 book ai didi

f# - 为什么在 F# 中允许使用可变参数?它们什么时候必不可少?

转载 作者:行者123 更新时间:2023-12-03 10:05:06 24 4
gpt4 key购买 nike

来自 C#,试图让我了解这门语言。

据我了解,F# 的主要好处之一是您可以抛弃状态的概念,这应该(在许多情况下)使事情变得更加健壮。

如果是这种情况(如果不是,请纠正我),为什么允许我们用可变参数打破这个原则?对我来说,感觉就像它们不属于这种语言。我知道您不必使用它们,但它为您提供了偏离轨道并以 OOP 方式思考的工具。

任何人都可以提供一个例子来说明可变值在何处必不可少?

最佳答案

当前用于声明性(无状态)代码的编译器不是很聪明。这会导致大量内存分配和复制操作,这些操作相当昂贵。改变对象的某些属性允许重新使用处于新状态的对象,这要快得多。

想象你做一个游戏 10000 个单位以每秒 60 滴答的速度移动。您可以在 F# 中执行此操作,包括在单个 CPU 内核上与可变四叉树或八叉树发生冲突。

现在想象单位和四叉树是不可变的。编译器没有比每秒分配和构造 600000 个单元并每秒创建 60 个新树更好的主意。这不包括其他管理结构的任何变化。在具有复杂单元的实际用例中,这种解决方案会太慢。

F# 是一种多范式语言,使程序员能够编写函数式、面向对象的程序,并且在一定程度上可以编写命令式程序。目前,每个变体都有其有效用途。也许,在 future 的某个时候,更好的编译器将允许更好地优化声明式程序,但现在,当性能成为问题时,我们必须退回到命令式编程。

关于f# - 为什么在 F# 中允许使用可变参数?它们什么时候必不可少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29635231/

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