如何在 GDScript 中指定 any/unknown/variant 类型?

How to specify any/unknown/variant type in GDScript?

有没有办法在 GDScript 中指定未知类型?

GDScript 文档为此使用 Variant 类型(例如在 Array.count 方法中)。

说,我想写一个身份函数。我可以这样做:

func identity(x):
    return x

但我想声明参数类型和 return 值都可以是任何东西。类似于:

func identity(x: Variant) -> Variant:
    return x

虽然这不起作用。 Variant 不是已知的类型名称。我尝试了各种名称,但似乎没有任何效果。

是不是唯一可以省略类型的选项?

是的,唯一的选择是不指定类型。

这个函数:

func identity(x):
    return x

需要 Variant 和 returns Variant


在C++的Godot中定义了一个Variant class。正如您所发现的,我们不能在 GDScript 中按名称使用它。

请注意文档使用基于 C++ 的符号。例如 int count (Variant value) 不仅因为 Variant 与 GDScript 不同,而且还因为您在参数之后而不是在名称之前指定类型,您还使用 func.

这是 int count (Variant value) 在 GDScript 中的样子:func count(value) -> int:,这是 C++ 定义:int Array::count(const Variant &p_value) const (source)。 将 C++ 定义与文档中的定义进行比较。

再举一个例子,这是 Array duplicate (bool deep=false) 在 GDSCript 中的样子:func duplicate(deep:bool=false) -> Array:,这是 C++ 定义:Array Array::duplicate(bool p_deep) const。 (source)。 请注意,C++ 定义并未指示参数是可选的,该信息是为脚本绑定添加的。