Scala DSL:使用无参数方法链接的方法
发布时间:2020-12-16 18:48:29 所属栏目:安全 来源:网络整理
导读:我正在创建一个小 scala DSL并遇到以下问题,我真的没有解决方案.我想要实现的一个小概念示例: (Compute write "hello" read 'name calc() calc() write "hello" + 'name) 定义这个dsl??的代码大致如下: Object Compute extends Compute{ ... implicit def
我正在创建一个小
scala DSL并遇到以下问题,我真的没有解决方案.我想要实现的一个小概念示例:
(Compute write "hello" read 'name calc() calc() write "hello" + 'name ) 定义这个dsl??的代码大致如下: Object Compute extends Compute{ ... implicit def str2Message:Message = ... } class Compute{ def write(msg:Message):Compute = ... def read(s:Symbol):Compute = ... def calc():Compute = { ... } } 现在的问题是:如何在计算后摆脱这些括号?可能吗?如果是这样,怎么样?只是在定义中省略它们并没有帮助,因为编译错误. 解决方法
好吧,我想,我找到了一个可接受的解决方案……我现在实现了这种可能的语法
| write "hello" | read 'name | calc | calc | write "hello " + 'name 使用名为“|”的对象,我能够写出我想要的几乎所有的dsl.正常的,“;”如果无参数,则在calc之后需要.这里的技巧是接受DSL对象本身(这里,它是下一行的“|”).使this参数隐式也允许calc作为此代码中的最后一个语句.好吧,看起来绝对不可能按照我想要的方式,但这也没关系 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- PowerShell导出服务器本地Administrators组内成员
- scala方法定义函数接受不同数字类型的List
- 一键安装CDH
- 【1024前端技术峰会实录】Angular 2 核心模块剖析
- docker – Kubernetes – 从服务端点自动填充CloudDNS记
- bash – 有些程序不接受输入文件的进程替换吗?
- scala – 如何使用参数化演员在akka中创建路由器?
- angularjs – 如何使用angular-translate和angular-ui-rout
- 删除vs解决方案中的vss绑定信息 选择自 adow 的 Blog
- angularjs – 对$scope的需求感到困惑.$apply