如何在 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++ 定义并未指示参数是可选的,该信息是为脚本绑定添加的。
有没有办法在 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++ 定义并未指示参数是可选的,该信息是为脚本绑定添加的。