标签 | Scala 字数 | 3663字 阅读 | 10分钟 在skinny.validator框架中,提供如下的一种DSL调用方式来验证Map的值: def validationRules =...is之类的方法看起来应该是ParamDefinition的DSL方法。...方法进行归类,又可以很好地支持DSL的编码形式,算是DSL的一种最佳实践。...例如我需要抽象这么一个函数: () => Unit 在Java语言中,由于不支持函数作为参数或返回值,那就只有无奈地寻找到一个所谓Action的概念,定义接口: public interface Action...else ValidationFailure(paramDef, Seq(Error(this.name, this.messageParams))) }} skinny.validator框架提供了诸多内建的验证规则
伴随着Kotlin的发展,有一个神奇的框架 anko-layout,一直存在于我们的视野却又一直因为各种原因无法用于生产环境中。...最近在写项目时,再次拿出anko这个框架,思考它在UI小组件上的可用性。 PS: Anko !...= Anko_Layouts ,但是为了表述方便,文中一部分Anko是代指这Anko Layouts框架,大家自己理解一下~ 概述 关于 Anko-Layouts框架的好处和局限性,网上已经有大部分文章在讲...To get an instance * of this class, call {@link android.content.Context#getSystemService(java.lang.String...wrapContent) visibility = View.GONE } frameLayout.verticalLayout { } 摸着良心说,是不是比自己创建View(不管是从Inflater还是java
) 外部 DSL(从零开始构建的语言,需要实现语法分析器等) Android Gradle构建 Groovy是一种运行在JVM虚拟机上的脚本语言,能够与Java语言无缝结合,如果想了解Groovy可以查看...Groovy脚本-build.gradle 在Groovy下,我们可以像Python这类脚本语言一样写个脚本文件直接执行而无需像Java那样既要写好Class又要定义main()函数,因为Groovy本身就是一门脚本语言...Kotlin和anko进行Android开发 anko Anko 是一个 DSL (Domain-Specific Language), 它是JetBrains出品的,用 Kotlin 开发的安卓框架。...很多著名的框架例如Picasso、Retrofit也使用OkHttp作为底层框架。...在Android开发时候,选择图片加载库,一般会选择一些比较常用,知名度比较高的库,这里介绍一款新的图像处理框架cv4j ,cv4j 支持使用滤镜。
接文章 DSL in action 上一篇文章说了如何把DSL用在项目的布局中,而这篇文章来讲讲怎么把DSL用在Recyclerview中。...此框架已经在我的项目中大规模使用,并且极大地提高了Recyclerview列表构建效率和复用能力。...ItemController放在Item的伴生对象里面,不要在这里new ItemController,因为在自动生成ViewType的时候, * 我们是根据ItemController::class.java...然后在 autoRefresh的闭包中,我们只需要用DSL来表达这个需求即可。框架会帮我们做这一切。...ViewType问题: 我们真的需要手动指定ViewType吗,因为经过我的一番思考,ViewType和 ViewHolder::class.java在合理的封装下,可以是1对1的关系。
冲浪.jpg NetDiscover是一款基于Vert.x、RxJava2实现的爬虫框架。我最近添加了两个模块:Selenium模块、DSL模块。 一....支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。...DSL模块 该模块是由Kotlin编写的,使用它的特性进行DSL的封装。...不过话说回来,DSL也有缺陷,能够表达的功能有限,并且不是图灵完备的。...之后的版本主要是打算结合实时图像处理框架cv4j,以便更好地完善爬虫框架。
当向ES插入数据时,如果采用默认设置,且设置了倒排索引,那么对应的字符串会被分词并建立倒排表.且到使用match进行匹配时,如上代码,匹配的是logs索引的Na...
{ text = "我永远喜欢燕结芽" } println(text.length) // ok, smart cast to String 为了解决这个问题,于是就有了 Contracts DSL...Contracts DSL Contracts DSL 可以为编译器提供关于函数行为的附加信息,帮助编译器分析函数的实际运行情况。...如果启用了该特性,那么编译器就能解析获取 Contracts DSL 所表达的信息,用于数据流分析。...虽然这个功能是 IDEA 提供的,不是 javac 的功能,并不能阻止错误的代码通过编译,仅仅只是增强 IDEA 的 Java 代码分析能力。...// KotlinMain.kt // 用kotlin写具体实现以干掉IDEA强大的Java代码分析功能 fun isNullOrEmpty(cs: CharSequence?)
Spring Webflux最近 介绍一个特性来定义函数式API,它使用一个非常直观的基于 Kotlin的 DSL。...这篇文章将简单地展示一组具有鲜明对比的定义API的方式,一个是基于java流畅的API,一个是基于Kotlin的DSL。...在Java中,使用函数式编程风格来定义一组CRUD的Spring Webflux API,代码通常是这样的: RouterFunction<?...messageHandler::updateMessage) DELETE("/{id}", messageHandler::deleteMessage) } } 我觉得这比基于java...的DSL在可读性方面要好一些。
本文关键字:DSL框架和自动化生成工具,pypy as dsl framework and jit framework 在《bcxszy》 part2中提到,发明各种DSL一直是软件工程模式之一,在那里...而.net,java这样的语言系统,它提出了统一后端,语言服务也是运行时和库,可以作为API调用,有DSL支持,即使所有语言可以无缝interspect,且它提倡将原生扩展做进纯粹managed runtime...联系到更早在《发布qtcling》时我们谈到llvm的jit原理和它独立于传统编译器的事实,这里我们看到LLVM作为一个DSL和JIT工具框架,它的强大实用性,要理解它,可拿它与clr,jvm这样的东西类比...框架,单PYPY是语言实现,整个PyPy语言系统就是一个编译器框架,完成可以拿来跟llvm+terracling结合效果相比,与llvm这种忠实地从0开始再造轮子的方法相比,pypy似乎更聪明一点,它重用轮子...然后其它的事就交给rpython强大的工具链,这是rpython第二部分,这就是我们说到的DSL产生工具框架和JIT产生器,类似LLVM统一后端。
1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。...1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。...转换为之前说的四个要点: 原始条件:不确定,可以任意变化 过滤条件:brand = "如家" 算分函数:可以简单粗暴,直接给固定的算分结果,weight 运算模式:比如求和 因此最终的DSL
这是《从 Java 和 JavaScript 来学习 Haskell 和 Groovy》系列的第四篇。 首先来理解 DSL。...先来看 Java。用 Java 写 DSL 是可能的,但是写高效和简洁的 DSL 是困难的。原因在于它的语法限制,必须严谨的括号组合,不支持脚本方式执行代码等等。 首先讲讲链式调用。...这也不是 Java 特有的东西,只不过 Java 的限制太多,能帮助 DSL 的特性很少,第一个能想到的就是它而已。...其次是嵌套函数,这也不是 Java 特有的东西,它和链式调用组成了 DSL 最基本的实现形式: new Map( city("Beijing", x1, y1), city("Shanghai"..., x2, y2), city("Guangzhou", x3, y3) ); 值得一提的是 Java 的闭包,可以说闭包是融合了管道操作和集合操作美感的,谈 DSL 不能不谈闭包。
常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。由于其使用简单的特性,DSL 通常不会像 Java,C++等语言将其应用于一般性的编程任务。...对于 Groovy 来说,一个伟大的 DSL 产物就是新一代构建工具——Gradle,接下来让我们看下有哪些特性来支撑Groovy方便的编写DSL: ?...在DSL中,一个DSL脚本就是一个闭包。...有点类似于 Java 中的反射,但是在使用上却比 Java 中的反射简单的多。...项目地址:https://github.com/sofn/dsl-groovy 本文作者:木小丰,美团Java高级工程师,关注架构、软件工程、全栈等,不定期分享软件研发过程中的实践、思考。
Kotlin DSL脚本 就像基于groovy的DSL一样,Kotlin DSL是在Gradle的Java API之上实现的。...了解类型安全模型访问器何时可用 Kotlin DSL目前支持由插件提供的类型安全模型访问器: Dependency和artifact configurations(比如由Java Plugin提供的implementation...一个极端的例子是使用Java、Groovy和Kotlin实现的任务和插件的构建,同时也使用Kotlin DSL和Groovy DSL构建脚本。...引用Kotlin参考文档: Kotlin在设计时考虑到了Java互操作性。现有的Java代码可以从Kotlin以一种自然的方式调用,Kotlin代码也可以在Java中相当顺畅地使用。...从Kotlin调用Java和从Java调用Kotlin在Kotlin参考文档中都有很好的介绍。 这同样适用于与Groovy代码的互操作性。
目前继续在 Kotlin Multiplatform 开源领域发力,打造出了基于 DSL 及 Kotlin Symbol Processor(KSP)开发的 SQLite 框架—— SQLlin。...因此,寻找或开发一款支持 Kotlin Multiplatform 的 SQLite 框架是我们的必选项。 但同时我们也注意到,SQLite 框架本身的意义并不仅仅在于扩展其支持的技术栈。...2.2.1 Jetpack Room Jetpack Room(参考链接 4)是 Google 官方提供的 SQLite 框架,最初用 Java 打造,并非专为 Kotlin 而生。...2.3 需求确定 我们调研过的库与框架并不只有以上三款,在经过充分的对比后,我们决定仍然自己研发一款符合我们需求的 SQLite 框架,在取长补短与权衡利弊之后,我们认为它应该具有以下特性: (1)支持...3.3 DSL 设计与实现 3.3.1 基本设计 在 driver 层的实现没有太大障碍后,我们就可以着手进行 DSL 层的设计和开发。
DSL parser 和 PromQL 这是promql的学习笔记,从promql的代码学习中,希望学习到的是:如何实现一个像promql的parser 先看两个算法题 1....parseBoolExpr("|(f,t)") True PromQL简介 参考1 参考2 PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL
ES语法(DSL)简介1. 全文检索 2. 查询指定字段 3. 排序 4. 分页查询 5. 多条件查询 6. 过滤器的使用 7.
概述关于 DSLDSL(Domain Specific Language)领域专用语言Elasticsearch 提供了基于 JSON 的 DSL 来定义查询组成叶子查询子句:在特定域中寻找特定的值。.../索引名称/_search{ "query": { "查询类型": { "查询条件": "查询条件值" } }}查询类型match_allmatchtermrange...DSL...name": "Spring实战", "description": "全球有超过100 000名开发者使用本书来学习Spring 畅销经典Spring技术图书,针对Spring 5全面升级 Spring框架能够让...Java开发人员的工作更加轻松。
本篇为学习DSL时做的笔记,适合ES新手,大佬请略过~ Query DSL又叫查询表达式,是一种非常灵活又富有表现力的查询语言,采用JSON接口的方式实现丰富的查询,并使你的查询语句更灵活、更精确、更易读且易调试...例如检索“运维咖啡吧”是否匹配文档的标题,结果只有匹配或者不匹配,因为只是对结果进行简单的匹配,所以计算起来也非常快,并且过滤的结果会被缓存到内存中,性能要比Query查询高很多 简单查询 一个最简单的DSL...网上仅有一些大厂分享的比较泛的概念没有实际落地的过程,我在想把这些数据利用起来,初步想法是去ES搜索出来业务或者功能的流量数据,然后做趋势分析,这不从DSL开始学习,欢迎大家加我好友找我交流,我会非常乐意
DSL是Domain Specific Language的缩写,指的是为特定问题领域设计的计算机语言。这种语言专注于某特定领域的问题解决,因而比通用编程语言更有效率。...在Elasticsearch(ES)中,DSL指的是Elasticsearch Query DSL,一种以JSON形式表示的查询语言。通过这种语言,用户可以构建复杂的查询、排序和过滤数据等操作。
"sum": { "field": "order_platform_coupon_discount" } } } } }}DSL
领取专属 10元无门槛券
手把手带您无忧上云