跳转至

GFSchemaField

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/foundation/schema/gf_schema_field.gd
  • 模块:Standard
  • 继承:Resource
  • API:public
  • 类别:资源定义 (resource_definition)
  • 首次版本:4.4.0

通用数据字段声明。 描述一个 Dictionary 字段或数组元素的类型、必填性、空值策略、默认值和可选嵌套 schema。 它只表达结构契约,不绑定配置表、黑板、内容包或具体业务字段语义。

成员概览

类型 名称 签名
枚举 ValueType enum ValueType
属性 field_name var field_name: StringName = &""
属性 value_type var value_type: ValueType = ValueType.ANY
属性 required var required: bool = false
属性 allow_null var allow_null: bool = true
属性 default_value var default_value: Variant = null
属性 dictionary_schema var dictionary_schema: GFDictionarySchema = null
属性 array_item_schema var array_item_schema: GFSchemaField = null
属性 metadata var metadata: Dictionary = {}
属性 validation_rules var validation_rules: Array[GFValidationRule] = []
方法 configure func configure( p_field_name: StringName, p_value_type: ValueType = ValueType.ANY, options: Dictionary = {} ) -> GFSchemaField:
方法 get_field_key func get_field_key() -> StringName:
方法 is_value_valid func is_value_valid(value: Variant) -> bool:
方法 coerce_value func coerce_value(value: Variant) -> Variant:
方法 try_coerce_value func try_coerce_value(value: Variant) -> Dictionary:
方法 validate_value func validate_value(value: Variant, context: Dictionary = {}) -> GFValidationReport:
方法 add_validation_rule func add_validation_rule(rule: GFValidationRule) -> bool:
方法 get_enabled_validation_rules func get_enabled_validation_rules() -> Array[GFValidationRule]:
方法 duplicate_field func duplicate_field() -> GFSchemaField:
方法 describe func describe() -> Dictionary:
方法 value_type_to_name static func value_type_to_name(type_id: ValueType) -> String:

枚举

ValueType

  • API:public
enum ValueType {
    ## 不做类型约束。
    ANY,
    ## 布尔值。
    BOOL,
    ## 整数。
    INT,
    ## 浮点数;int 也视为有效。
    FLOAT,
    ## String。
    STRING,
    ## StringName。
    STRING_NAME,
    ## Vector2。
    VECTOR2,
    ## Vector2i。
    VECTOR2I,
    ## Vector3。
    VECTOR3,
    ## Vector3i。
    VECTOR3I,
    ## Color。
    COLOR,
    ## Dictionary,可选嵌套 GFDictionarySchema。
    DICTIONARY,
    ## Array,可选数组元素 GFSchemaField。
    ARRAY,
    ## Object。
    OBJECT,
    ## Resource。
    RESOURCE,
    ## NodePath。
    NODE_PATH,
}

字段值类型。

属性

field_name

  • API:public
var field_name: StringName = &""

字段名。作为数组元素 schema 使用时可为空。

value_type

  • API:public
var value_type: ValueType = ValueType.ANY

字段值类型。

required

  • API:public
var required: bool = false

是否必须出现在所属 Dictionary 中。

allow_null

  • API:public
var allow_null: bool = true

是否允许 null 值。

default_value

  • API:public
var default_value: Variant = null

默认值。GFDictionarySchema.apply_defaults() 会在缺字段时使用。

结构:

  • default_value: Variant default field value.

dictionary_schema

  • API:public
var dictionary_schema: GFDictionarySchema = null

字典类型字段的嵌套 schema。

array_item_schema

  • API:public
var array_item_schema: GFSchemaField = null

数组类型字段的元素 schema。

metadata

  • API:public
var metadata: Dictionary = {}

可选元数据。GF 不解释其中业务字段。

结构:

  • metadata: Dictionary caller-defined schema metadata.

validation_rules

  • API:public
  • 首次版本:6.0.0
var validation_rules: Array[GFValidationRule] = []

字段级附加校验规则。 规则在基础类型、空值和嵌套 schema 校验通过后执行,用于表达范围、集合、 格式或项目自定义约束,而不把这些策略硬编码进字段类型。

结构:

  • validation_rules: Array[GFValidationRule] field-level validation rules.

方法

configure

  • API:public
func configure( p_field_name: StringName, p_value_type: ValueType = ValueType.ANY, options: Dictionary = {} ) -> GFSchemaField:

配置字段声明。

参数:

名称 说明
p_field_name 字段名。
p_value_type 字段值类型。
options 可选配置,支持 required、allow_null、default_value、dictionary_schema、array_item_schema 和 metadata。

返回:当前字段。

结构:

  • options: Dictionary schema field options.

get_field_key

  • API:public
func get_field_key() -> StringName:

获取稳定字段键。

返回:字段名。

is_value_valid

  • API:public
func is_value_valid(value: Variant) -> bool:

检查输入值是否符合字段声明。

参数:

名称 说明
value 待检查值。

返回:符合声明时返回 true。

结构:

  • value: Variant value to validate.

coerce_value

  • API:public
  • 首次版本:4.4.0
func coerce_value(value: Variant) -> Variant:

将输入值转换为字段要求的类型;转换失败时返回输入值副本。

参数:

名称 说明
value 输入值。

返回:转换后的值;失败时为输入值副本。

结构:

  • value: Variant value to coerce.
  • return: Variant coerced value.

try_coerce_value

  • API:public
func try_coerce_value(value: Variant) -> Dictionary:

尝试转换输入值并返回转换报告。

参数:

名称 说明
value 输入值。

返回:包含 ok、value、message 的转换报告。

结构:

  • value: Variant value to coerce.
  • return: Dictionary with ok, value, and message.

validate_value

  • API:public
func validate_value(value: Variant, context: Dictionary = {}) -> GFValidationReport:

校验字段值并返回报告。

参数:

名称 说明
value 待校验值。
context 可选上下文,支持 subject、path、key 和 schema_id。

返回:校验报告。

结构:

  • value: Variant value to validate.
  • context: Dictionary validation context.

add_validation_rule

  • API:public
  • 首次版本:6.0.0
func add_validation_rule(rule: GFValidationRule) -> bool:

添加字段级校验规则。

参数:

名称 说明
rule 校验规则。

返回:添加成功返回 true。

get_enabled_validation_rules

  • API:public
  • 首次版本:6.0.0
func get_enabled_validation_rules() -> Array[GFValidationRule]:

获取启用的字段级校验规则。

返回:规则数组副本。

duplicate_field

  • API:public
func duplicate_field() -> GFSchemaField:

创建同内容拷贝。

返回:新字段声明。

describe

  • API:public
func describe() -> Dictionary:

导出字段声明摘要。

返回:字段声明字典。

结构:

  • return: Dictionary schema field description.

value_type_to_name

  • API:public
static func value_type_to_name(type_id: ValueType) -> String:

将字段类型转换为稳定名称。

参数:

名称 说明
type_id 字段类型。

返回:类型名称。