Scala – 前缀一元运算符
发布时间:2020-12-16 19:05:41 所属栏目:安全 来源:网络整理
导读:我最近向 Scala提供了第二次机会,并从我始终实施的功能(功能或伪功能语言)开始:命题逻辑的自动推理器(以及后来的谓词逻辑). 现在,我已经尝试在语言本身中尽可能地获得命题逻辑的符号,而且我已经得到了一个隐含的转换(String – Atom): ("A" and "B") impli
我最近向
Scala提供了第二次机会,并从我始终实施的功能(功能或伪功能语言)开始:命题逻辑的自动推理器(以及后来的谓词逻辑).
现在,我已经尝试在语言本身中尽可能地获得命题逻辑的符号,而且我已经得到了一个隐含的转换(String – > Atom): ("A" and "B") implies "C" 函数“和”和“暗示”(和“或”和“等价”)是调用相关案例类构造函数的简单方法.但是,当执行“not”时,我被卡住了以下两个符号之一: ("A" and "B").not Not("A" and "B") 有没有办法来欺骗Scala接受所需的: not("A" and "B") 最好不要将“不”改为“不”,因为我以后可能会称它为“?”或其他东西. 解决方法
截至2014年2月,我认为在表达式上定义前缀不操作的最简单的方法是避免各种额外的cruft / wrap,将直接在包范围内声明函数以及所有其他函数,类,类型等:这是通过定义一个包对象来完成的(Scala不允许你把函数放在.scala文件的根级别上)(我想知道为什么只是跟随Java的脚步声? )).
package org.my.logiclib implicit class Atom(s: String) { ... } class MyType1 class MyType2 object `package` { def not(expr: Expr) = ... } 这样做,导入org.my.logiclib._将导入所有内容,包括not(). 以上是一样的 package org.my package logiclib { implicit class Atom ... ... def not(expr: Expr) = ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Webservice soap wsdl区别之个人见解
- Bash if语句中带有变量的空格
- bootstrap框架中data-xxx 的属性
- angularjs – ui-bootstrap-tpls.min.js和ui-bootstrap.min
- Speeding up AngularJS apps with simple optimizations
- shell脚本练习题
- shell获取时间的相关命令
- Haskell和Scala中的“Right 5”
- twitter-bootstrap-3 – Chosen.js样式不符合Bootstrap3样式
- scala – @BeanProperty支持PropertyChangeListener?