加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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作为此代码中的最后一个语句.好吧,看起来绝对不可能按照我想要的方式,但这也没关系

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读