当前位置: 首页 > news >正文

化工网站制作网站建设资源平台

化工网站制作,网站建设资源平台,wordpress4.0友情链接,wordpress 入门主题DSL#xff08;领域特定语言#xff09; 常见的DSL就是SQL和正则表达式#xff0c;用于操作数据库和文本字符串#xff0c;Kotlin DSL通常为嵌套的Lambda表达式或链式方法#xff0c;如 https://github.com/gradle/gradle-script-kotlin 用于构建Gradle脚本https://gith…DSL领域特定语言 常见的DSL就是SQL和正则表达式用于操作数据库和文本字符串Kotlin DSL通常为嵌套的Lambda表达式或链式方法如 https://github.com/gradle/gradle-script-kotlin 用于构建Gradle脚本https://github.com/JetBrains/Exposed 用于操作数据库https://github.com/Kotlin/kotlinx.html 用于生成HTML 带接收者的Lambda和扩展函数类型 对于普通的生成字符串函数需要在Lambda中使用it指向StringBuilder实例 fun buildString(builderAction: (StringBuilder) - Unit): String {val sb StringBuilder()builderAction(sb)return sb.toString() }val s buildString {it.append(Hello )it.append(World) }println(s)转换为带接收者的Lambda可通过this或直接调用方法 fun buildString(builderAction: StringBuilder.() - Unit): String {val sb StringBuilder()sb.builderAction()return sb.toString() }val s buildString {this.append(Hello )append(World) }println(s)具体做法是使用扩展函数类型取代普通函数类型来声明参数的类型将函数类型签名中的一个参数移到括号前面并用一个.分割 (StringBuilder) - Unit //一个接收StringBuild参数、无返回值的函数 StringBuilder.() - Unit //将接收者对象参数往前移也声明一个扩展函数类型的变量 val appendExcl: StringBuilder.() - Unit { this.append(!) } val sb StringBuilder(Hi) sb.appendExcl() println(sb)Kotlin标准库中的apply和with就是利用扩展函数类型 public inline fun T T.apply(block: T.() - Unit): T {.....block() //apply的接收者被当作lambda的接收者return this //返回接收者 }public inline fun T, R with(receiver: T, block: T.() - R): R {......return receiver.block() //返回调用Lambda的结果 }HTML构建器 用于Html的Kotlin DSL叫做HTML构建器其是类型安全的 open class Tag(val name: String) {private val children mutableListOfTag()protected fun T : Tag doInit(child: T, init: T.() - Unit) {child.init()children.add(child)}override fun toString() $name${children.joinToString()}/$name }fun table(init: TABLE.() - Unit) TABLE().apply(init)class TABLE : Tag(table) {fun tr(init: TR.() - Unit) doInit(TR(), init) }class TR : Tag(tr) {fun td(init: TD.() - Unit) doInit(TD(), init) }class TD : Tag(td)fun createTable() table {tr {td {}}}调用 println(createTable())tabletrtd/td/tr/tableinvoke约定 重写invoke()可以让对象像函数一样调用p(1)会被编译成p.invoke(1) class Person(val name: String) {operator fun invoke(age: Int) {println($name,$age)} }val p Person(A) p(1)Gradle中的DSL class DependencyHandler {fun compile(coordinate: String) {println(add dependency on $coordinate)}operator fun invoke(body: DependencyHandler.() - Unit) {body()} }val dependencies DependencyHandler()dependencies.compile(com.demo.demo-lib:1.0.0)dependencies {compile(com.demo.demo-lib:1.0.0) }中缀调用的DSL 对于下面的DSL infix fun T T.should(matcher: MatcherT) matcher.test(this)interface MatcherT {fun test(value: T) }class startWith(val prefix: String) : MatcherString {override fun test(value: String) {if (!value.startsWith(prefix)) {throw AssertionError($value does not start with $prefix)}}可使用中缀调用 kotlin should startWith(kot)kotlin.should(startWith(kot))还可利用包装类进一步简化利用obetject对象选择不同类型的should()重载方法 object start infix fun String.should(x: start): StartWrapper StartWrapper(this) class StartWrapper(val value: String) {infix fun with(prefix: String) if (!value.startsWith(prefix))throw AssertionError($value does not start with $prefix)elseprintln(success) }kotlin should start with (kot)kotlin.should(start).with(kot)基本数据类型上定义扩展 val Int.days: Periodget() Period.ofDays(this)val Period.ago: LocalDateget() LocalDate.now() - thisval Period.fromNow: LocalDateget() LocalDate.now() this通过扩展函数实现获取一天前和一天后的日期 println(1.days.ago) println(1.days.fromNow)
http://www.dnsts.com.cn/news/149887.html

相关文章:

  • 专题网站开发报价怎么做一直弹窗口网站
  • 网站首次备案 多久手机怎么登录微信网页版
  • 网站引入优酷视频旅游网站规划设计与建设
  • 网站模板 作业谷歌系平台推广
  • 搜索引擎网站优化推广浙江均泰建设有限公司网站
  • 网站开发项目时序图商标logo设计生成器免费
  • 天价索赔背后的平台版权对垒慈溪企业网站seo
  • 合肥网站建设王道下拉??线下推广有哪些渠道
  • 个性化网站有哪些新钥匙石家庄网站建设
  • 哪里网站海报做的比较好桂林建设信息网站
  • 百度站长工具登录方式网站搜索排名和什么有关系
  • 网站规划与建设wordpress 主题 排名
  • 如何做网站界面linode vps wordpress
  • 如何做pc网站适配胶南网络推广
  • 机关门户网站 建设 方案wordpress的固定链接怎么设置
  • 做学徒哪个网站好贵阳开发网站建设
  • 智能家居网站建设可行性分析报告常见的门户网站有哪些
  • 网站建设 网络科技公司网站备案幕布大小
  • 微信微网站建设门户制作
  • 网站建设中关村网站建设规划书 百度文库
  • 合肥国际网站建设正规平台博兴做网站
  • 网站建设常州麦策电商开发公司安全管理组织机构图
  • 免费网站建设招商做网站服务器可以挂到外地么
  • 学校门户网站建设方案企业如何做网站推广
  • 途牛旅游网站建设目的如何创建电子商务网站
  • 网络推广建立站点如何建立网站怎么创建内容
  • 怎么挖掘网站的关键词网站seo专员招聘
  • 建设部证书查询网站学校校园网站建设实践选题背景
  • 建设邮费自己的网站 要不要购买服务器的网站的网页
  • 如何做二维码跳转到网站曹县网站建设公司