在 Unity3D 中,我们可以通过将字段标记为公共来使其在编辑器中可访问。然后,这允许在 GUI 中分配字段的变量,而不是对其进行硬编码。例如,此 C# 代码将显示一个可以在开发过程中手动编辑的“速度”字段。如果保持不变,它将默认为 10:
public class Example : MonoBehaviour {
public float speed = 10.0F;
}
我尝试在 F# 中使用自动属性执行此操作:
type Example() =
inherit MonoBehaviour()
member val speed = 10.f with get,set
但这不起作用。但是,如果我使用显式属性,它确实有效
[<DefaultValue>] val mutable speed : float32
但这具有无法在同一表达式中指定默认值的缺点。
显式和自动属性不是编译成同一件事吗,唯一的区别是显式属性总是初始化为零?以及如何在 F# 中声明等效的 C# 代码?