Apple-แแ แฆแแ แแแแแ แแแแแฃแจแแ Pkl แแ แแแ แแแแ แแแแก แแแ, แ แแแแแแช แจแแฅแแแแแแ แแแแคแแแฃแ แแชแแแก แแแแกแแแฆแแ แแกแแแแก แแ แฎแแแก แฃแฌแงแแแก โแแแแคแแแฃแ แแชแแแก, แ แแแแ แช แแแแแกโ แแแแแแก. Pkl-แแแ แแแแแแจแแ แแแฃแแ แแแกแขแ แฃแแแแขแแ แแฃแแแก แแแแ แแแ แแแฌแแ แแแแ Kotlin-แจแ แแ แแแแแฅแแแงแแแแฃแแแ Apache แแแชแแแแแแ. Pkl แแแแแแ แแฃแจแแแแแกแแแแก แแแแแแแแ แแแแแแแขแแแ IntelliJ, Visual Studio Code แแ Neovim แแแแแแแแ แแแแก แแแ แแแแกแแแแก. แแแแ แแแกแแแแแแแแแ LSP (Language Server Protocol) แแแแแฃแจแแแแแแแก แแแแแฅแแแงแแแแ.
Pkl แแแ แแแแแแแก แแแแแแแ แแแกแแแแแ แแแแแแ แแชแแฃแแ แแแแก แแแแกแแแแแก แแแแแแ แแแแแจแแฃแแแแแก แแแแแแก แแแคแแ แแแแแฃแ แจแแกแแซแแแแแแแแแแแ. แแแ แแฎแแ แก แฃแญแแ แก แขแแแแแแก แแแแขแแชแแแแก, แแแแกแแแก, แคแฃแแฅแชแแแแก, แแแแแแแแแ แแแแแกแแฎแฃแแแแแแก, แแแ แแแแแกแ แแ แชแแแแแแก. Pkl-แแก แแแแแงแแแแแ แจแแกแแซแแแแแแแ แ แแแแ แช แกแฎแแแแแกแฎแแ แคแแ แแแขแจแ, แ แแแแ แแชแแ JSON, YAML แแ XML, แกแขแแขแแแฃแ แ แแแแคแแแฃแ แแชแแแแแก แแแแแ แแ แแแแกแแแแก, แแกแแแ แกแฎแแแแแกแฎแแ แแ แแแ แแแแ แแแแก แแแแแ แแแแแแแชแแแแจแ แแแแแแแแฃแแ แแแแคแแแฃแ แแชแแแก แคแแ แแแขแแแแก แแแกแแแฃแจแแแแแแแ แแแแฃแแแแแก แคแแ แแแ แแแแกแแแแก.
Pkl-แแก แแแแแแแชแแแแจแ แแแขแแแ แแ แแแแกแแแแก แจแแแแแจแแ แแแแแ แแแแแแแแ Java-แกแแแแก, Kotlin-แแกแแแแก, Go-แกแแแแก แแ Swift-แแกแแแแก. Spring แฉแแ แฉแแกแแแ แแแขแแแ แแชแแแก แแแแฃแแ แชแแแแแ แจแแแแแแแแแแแฃแแ. แจแแแแแจแแ แแแแแ แกแแจแฃแแแแแแก แแซแแแแ, Pkl แแแแแ แแแแคแแแฃแ แแชแแแก แกแแคแฃแซแแแแแ, แจแแแฅแแแแก แแแ แแแแแขแแแ แแ แแแแฃแแแแ แแแแกแแแแ, แแแแแแแชแแแจแ แแฆแฌแแ แแ แแแแคแแแฃแ แแชแแแกแแแ แกแแแฃแจแแแ. แแแแคแแแฃแ แแชแแแก แแฆแฌแแ แแแแแแก แแฅแแแ แแแแแขแแแ แจแแแซแแแแ แแแแแฅแแแงแแแแก แกแแชแแแแแจแ แแ แแแแแ แขแแ แแแฃแแ แแงแแก แ แแแแ แช แแแแแแแแแแฃแแแแ, แ แแช แกแแจแฃแแแแแแก แแซแแแแ Pkl แแแแแก แแแแแแ แแแฃแแ แแแแแงแแแแแ แกแฎแแแแแกแฎแแ แแ แแแฅแขแแแก แจแแ แแก.
แแแ แฃแแ แฃแแแแแงแแคแก แแแ แแแแแแก แแแแกแแแฆแแ แแกแ แแ แแแแจแแแแแแแแแแก แกแแกแฌแแ แแก แจแแแแฌแแแแแก แแแฅแแแ แกแแจแฃแแแแแแแก, แ แแช แกแแจแฃแแแแแแก แแแซแแแแ แแฆแแแแฉแแแแ แจแแชแแแแแแ แกแแแแแแ แแแแคแแแฃแ แแชแแแจแ, แกแแแแ แแก แแแแแแแชแแแจแ แแแแแแงแแแแแ. แแแแแแแแแ, แจแแแแซแแแแ แแแแกแแแฆแแ แแ แแแแจแแแแแแแแแแก แแแกแแฆแแแ แแแแแแแแแ ("port: Int(this > 1000)" แแ "age: Int(isBetween(0, 130))"), แกแแแแแแแแฃแแ แแ แแ แแกแแแแแแแแฃแแ แจแแแกแแแ แแ แคแแ แแแขแ ("zipCode: String(matches(Regex("\\d{5}")))"). แแฃ แแแแแญแแแฃแแแ แแแแจแแแแแแแ, แ แแแแแแช แแ แจแแแกแแแแแแแ แแแ แแแแก, แแแแแแแขแแ แ แแฉแแแแแแก แจแแชแแแแแก (แแแแแแแแแ, แ แแแแกแแช แชแแแแแแก 1001 แแแแจแแแแแแแแก แแแแแญแแแแก แแแ แแแแขแ แแกแแแแก, แ แแแแแแช แแแแกแแแฆแแ แฃแแแ แ แแแแ แช "Int(this > 1000)").
แแแแแแแแแ, Pkl แแแแแ แจแแแแซแแแแ แแแฌแแ แแ Application.pkl แแแแฃแแ DBMS แแแแจแแ แแก แแแแคแแแฃแ แแชแแแก แจแแแแแแแ: module Application hostname: String port: UInt16 environment: Environment database: Database class Database { username: String password: String host: String port: UInt16 dbName: String } typealias Environment = ยซdevยป|ยปqaยป|ยปprodยป
แจแแแแแ, แจแแแแซแแแแ แแแ แแแแแ แจแแฅแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแ, แ แแแแแแช แแ แแแแฃแแก แแแแแแงแแแแแก แแแแจแแแแแแแแแแก แกแแกแฌแแ แแก แจแแกแแแแฌแแแแแแ: amends "Application.pkl" hostname = "localhost" port = 3599 environment = "dev" database { host = "localhost" port = 5786 username = "admin" password = read("env:DATABASE_PASSWORD") dbName = "myapp" }
แแกแแแ แแแฌแแ แแ แแแแแ แแขแแ แ, แ แแแแแแช แแแขแแแแขแแแแ แแแก แแแ แขแแก แแแแ แแก แจแแชแแแแก แแแฎแ แกแฎแแแแแกแฎแแ แแแแแชแแแแ แแแแแกแแแแก: import "Application.pkl" hidden db: Application.Database = new { host = "localhost" username = "admin" password = read("env:DATABASE_PASSWORD") dbName = "myapp" } sidecars { for (offset in List(0, 1, 2, 3)) { (db) { port = 6000 + offset } } }
แกแฃแ แแแแแก แจแแแแฎแแแแแจแ, แจแแแแซแแแแ แแแแคแแแฃแ แแชแแแก แแฅแกแแแ แขแ แกแฎแแ แคแแ แแแขแจแ, แแแแแแแแแ, YAML: sidecars: โ username: admin password: hunter2 host: localhost port: 6000 dbName: myapp โ username: admin password: hunter2 host: localhost port: 6001 dbName: myapp โ username: admin password: hunter2 host: localhost port: 6002 dbName: myapp โ username: admin password: hunter2 host: localhost port: 6003 dbName: myapp
Pkl แแแแคแแแฃแ แแชแแแก แกแฅแแแ แแกแแแ แจแแแซแแแแ แแแ แแแแฅแแแแก แแแแกแแแแ แแ แกแขแ แฃแฅแขแฃแ แแแแ แแแแแแแชแแแก แแแแจแ แฉแแกแแแแแแ. แแแแแแแแแ, แจแแแแซแแแแ Kotlin-แแกแแแแก แจแแแแแจแแ แแแแก แแแแแ แแ แแแ: import kotlin.Int import kotlin.Long import kotlin.String data class Application( val hostname: String, val port: Int, val environment: Environment, val database: Database ) { data class Database( val username: String, val password: String, val host: String, val port: Int, val dbName: String ) enum class Environment( val value: String ) { DEV(ยซdevยป), QA(ยซqaยป), PROD(ยซprodยป); override fun toString() = value } }
แฌแงแแ แ: opennet.ru
