Validasi dalam Bahasa Pemrograman KCL
pengantar
Kusion Configuration Language (KCL) adalah catatan berbasis kendala sumber terbuka dan bahasa fungsional. KCL meningkatkan penulisan sejumlah besar konfigurasi kompleks melalui teknologi dan praktik bahasa pemrograman yang matang, dan berkomitmen untuk membangun modularitas, skalabilitas, dan stabilitas yang lebih baik di sekitar konfigurasi, penulisan logika yang lebih sederhana, otomatisasi cepat, dan ekstensionalitas ekologis yang baik.
Prasyarat
Instal KCL:
Setiap rilis KCL mencakup berbagai OS dan arsitektur. Versi biner ini dapat diunduh dan diinstal secara manual dari Github dan ditambahkan {install-location}/kclvm/binke lingkungan PATH.
export PATH=$PATH:{install-location}/kclvm/bin
Selain menggunakan kode KCL untuk menghasilkan format konfigurasi seperti JSON/YAML, KCL juga mendukung validasi format data JSON/YAML. Sebagai bahasa konfigurasi, KCL mencakup hampir semua fitur OpenAPI .
Di KCL, definisi struktur dapat digunakan untuk memvalidasi data konfigurasi. Pada saat yang sama, ini mendukung aturan batasan yang ditentukan pengguna melalui blok centang, dan menulis ekspresi validasi dalam skema untuk memeriksa dan memvalidasi atribut yang ditentukan oleh skema. Sangat jelas dan sederhana untuk memeriksa apakah input JSON/YAML memenuhi definisi dan batasan struktur skema yang sesuai .
Dalam skema, kita dapat menggunakan checkkata kunci untuk menulis aturan validasi dari setiap atribut skema. Setiap baris di blok centang sesuai dengan ekspresi bersyarat. Ketika kondisi terpenuhi, validasi berhasil. Ekspresi bersyarat dapat diikuti dengan , "check error message"untuk menunjukkan pesan yang akan ditampilkan saat pemeriksaan gagal. Berikut adalah contoh skema dengan ekspresi kendala.
import regex
schema Sample:
foo: str # Required, cannot be None/Undefined, and the type must be str
bar: int # Required, cannot be None/Undefined, and the type must be int
fooList: [int] # Required, cannot be None/Undefined, and the type must be int list
color: "Red" | "Yellow" | "Blue" # Required, literal union type, and must be one of "Red", "Yellow", "Blue".
id?: int # Optional, can be None/Undefined, the type must be int
check:
0 <= bar < 100 # bar must be greater than or equal to 0 and less than 100
0 < len(fooList) < 100 # fooList cannot be None/Undefined, and the length must be greater than 0 and less than 100
regex.match(foo, "^The.*Foo$") # regular expression matching
bar in range(100) # bar can only range from 1 to 99
bar in [2, 4, 6, 8] # bar can only take 2, 4, 6, 8
bar % 2 == 0 # bar must be a multiple of 2
all foo in fooList {
foo > 1
} # All elements in fooList must be greater than 1
any foo in fooList {
foo > 10
} # At least one element in fooList must be greater than 10
abs(id) > 10 if id # check expression with if guard, when id is not empty, the absolute value of id must be greater than 10
Ada file format JSON data.json:
{
"name": "Alice",
"age": "18",
"message": "This is Alice",
"data": {
"id": "1",
"value": "value1"
},
"labels": {
"key": "value"
},
"hc": [1, 2, 3]
}
schema User:
name: str
age: int
message?: str
data: Data
labels: {str:}
hc: [int]
check:
age > 10
schema Data:
id: int
value: str
$ kcl-vet data.json schema.k
Validate succuss!
Rencana Masa Depan
Peningkatan kemampuan validasi KCL secara bertahap akan fokus pada aspek “statis”, yaitu pada waktu kompilasi, dikombinasikan dengan kemampuan validasi formal, dapat langsung menganalisis apakah data memenuhi kendala, apakah kendala tersebut saling bertentangan, dll., dan dapat diekspos secara real-time melalui IDE.
Kami juga berharap bahwa model dan kendala KCL dapat dikelola sebagai sebuah paket (paket ini hanya memiliki file KCL). Misalnya, model dan batasan Kubernetes dapat langsung digunakan. Pengguna dapat menghasilkan konfigurasi atau memverifikasi konfigurasi yang ada, dan dapat memperluas model dan batasan yang diinginkan pengguna melalui pewarisan KCL.
Lebih Banyak Dokumen
- Repo Github KCL:https://github.com/KusionStack/KCLVM
- Situs Web KCL:https://kcl-lang.io/
- Konfigurasi & Otomasi di KCL:https:///dev-genius/configuration-automation-in-kcl-f355732d9f20

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































