Scala – `apply()`不带参数方法和调用时的曲线括号
发布时间:2020-12-16 18:11:49 所属栏目:安全 来源:网络整理
导读:我正在使用 Scala构建DSL,我有这样一个对象: object block { def apply(content: String): String = "{n" + content + "}n" def apply(): String = block("empty block")} 所以以后在我的DSL中我可以说: block { "good stuff goes here"} 没关系,但是我
我正在使用
Scala构建DSL,我有这样一个对象:
object block { def apply(content: String): String = "{n" + content + "}n" def apply(): String = block("empty block") } 所以以后在我的DSL中我可以说: block { "good stuff goes here" } 没关系,但是我想要使用第二个apply()方法来允许用户写空块,以便稍后填写它们.但编译器不允许使用花括号调用无参数apply()方法…除了使用括号之外,还有什么方法吗?如果不是,那为什么不允许这样做? 更新:供参考:两个答案应合并为全图. 解决方法
您可以让它取一个被忽略的Unit类型的参数,而不是没有任何参数的apply方法:
def apply(ignored: Unit) = "{n}n" 然后你就可以写了 block {} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 简要介绍Bootstrap,以及如何下载、使用
- 检查元素是否存在 – Jasmine&Angular
- bash – 使用shell脚本切割字符串中的最后n个字符
- unix – tmux转置/重新排列窗格?
- twitter-bootstrap – 如何在Bootstrap表单中排列标签和只读
- twitter-bootstrap – 在点击时打开eternicode datepicker,
- WebService大讲堂之Axis2(4):二进制文件传输 (转载)
- Scala – 从List中获取带有扭曲的唯一值
- Bootstrap扁平化设计的网站后台管理系统源代码下载
- 为什么在Scala中可以在运行时将AnyVal转换为AnyRef?