Darabonba 语言学习--自定义类型Model

简介: 本篇文章仅作为本人学习记录,如涉及侵权问题。及时联系作者,予以删除。

自定义类型 Model

介绍

Darabonba 中,我们通过 Model 来表示属性可枚举的对象结构,可以将其翻译为一个确切的类型,比如在 JavaTypeScript 中可以翻译为 class,在 Go 中可以翻译为 struct。通过该类型可以为我们的 functionapi 提供准确的入参和出参类型。Model 通过 model modelName { key: valueType } 的方式定义,valueType 可以为基础类型、复杂类型及 Model

modelSimple {
name: string,
age: number}
modelComplex {
// 数组类型arr: [ string ],
// Map 类型collection: map[string]string,
// Model 类型otherModel: Simple,
// object 类型obj: object,
// any 类型key: any}

匿名 Model

ModelvalueType 中不仅可以使用已经定义好的 Model,还能直接在 valueType 处定义匿名 Model 使用。

modelComplex {
arr: [ string ],
// 通过匿名 Model 指定字段类型subModel: {
username: string,
age: number  }
}

Model 初始化

Model 的使用类似于 JavaTypeScript 中的 class,通过关键字 new 来得到 Model 的实例。

modelUser {
username: string,
age: number}
modelComplex {
arr: [ string ],
otherModel: User,
subModel: {
username: string,
age: number  }
}
// 模块的初始化函数init() {
varuser=newUser{
username='page',
age=18  };
varsubModel=newComplex.subModel{
username=user.username,
age=user.age  };
varcomplex=newComplex{
arr= [ 'page' ],
otherModel=user,
subModel=newComplex.subModel{
username=user.username,
age=user.age    }
  };
}

Model 的字段描述


通过字段的描述,可以更好的约束字段的行为,如限制最大值或最小值等,还能为字段的使用提供简单的介绍和说明。


目前支持的描述关键字:


  • maximum :
  • 限制字段的最大值,只能用于数字类型的字段。
  • minimum :
  • 限制字段的最小值,只能用于数字类型的字段。
  • maxLength :
  • 限制字段的最大长度,可以用于字符串、数组类型的字段。
  • minLength :
  • 限制字段的最小长度,可以用于字符串、数组类型的字段。
  • pattern :
  • 字符串的正则匹配规则,只能用于字符串类型的字段。
  • description :
  • 字段的描述信息。
  • example :
  • 字段的使用示例。
  • default :
  • 字段的默认值。


使用示例

modelUser {
username: string(
description="登陆账号",
example="johny",
maxLength=32,
minLength=5,
pattern="[a-z0-9A-Z]+"  ),
age: number(
description="年龄",
example="18",
maximum=150,
minimum=0,
default=18  )
}


相关文章
|
Go
Go 语言学习之基础数据类型
Go 语言学习之基础数据类型
63 0
|
2月前
|
大数据 Shell Go
GO方法与自定义类型
本文详细介绍了 Go 语言中的自定义数据类型与方法。不同于传统的面向对象编程语言,Go 通过结构体 (`struct`) 和方法 (`method`) 来扩展自定义类型的功能。文章解释了如何定义结构体、创建方法,并探讨了值接收器与指针接收器的区别及应用场景。此外,还介绍了方法的可见性以及接收器的命名惯例。通过具体示例,帮助读者更好地理解和应用这些概念。
|
3月前
|
存储 设计模式 安全
空结构体:Go 语言中的轻量级占位符
【8月更文挑战第31天】
39 0
|
6月前
|
存储 Go Python
Go 语言结构体
Go 语言结构体
26 0
|
6月前
|
Go
Go 语言中如何表示枚举值(enums)?
【2月更文挑战第22天】
442 3
|
6月前
|
存储 Go
Go 语言中结构体的使用和示例
结构体(简称struct)用于创建不同数据类型的成员集合,放入一个单一的变量中。虽然数组用于将相同数据类型的多个值存储在单一变量中,但结构体用于将不同数据类型的多个值存储在单一变量中。结构体对于将数据组合在一起以创建记录非常有用。
56 0
|
Go
Go 语言学习之常量
Go 语言学习之常量
33 0
|
存储 Java 编译器
Go 语言的参数传递
Go 语言的参数传递
77 0
Go 语言的参数传递
|
JSON Go 数据库
Go 编程 | 连载 17 - 结构体方法
Go 编程 | 连载 17 - 结构体方法
FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景
FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景
508 0
FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景