Dentaku —— 数学和逻辑公式解析器
Dentaku 是一种数学和逻辑公式语言的解析器和评估器,它允许在运行时将值绑定到公式中引用的变量。它旨在在不打开安全漏洞的情况下安全地评估不受信任的表达式。
例子
这可能是最简单的用代码来说明:
calculator = Dentaku::Calculator.new calculator.evaluate('10 * 2') #=> 2
要进入区分大小写的模式,只需将一个选项传递给计算器实例:
calculator.evaluate('Kiwi + 5', Kiwi: -2, kiwi: 2) #=> 7 calculator = Dentaku::Calculator.new(case_sensitive: true) calculator.evaluate('Kiwi + 5', Kiwi: -2, kiwi: 2) #=> 3
还可以将变量值存储在计算器的内存中,然后根据这些存储的值计算表达式:
calculator.store(peaches: 15) calculator.evaluate('peaches - 5') #=> 10 calculator.evaluate('peaches >= 15') #=> true
Dentaku 具有内置函数(包括if
、not
、min
、max
、sum
和 round
)以及定义自定义函数的能力。函数通常像 Excel 中的对应函数一样工作:
calculator.evaluate('SUM(1, 1, 2, 3, 5, 8)') #=> 20 calculator.evaluate('if (pears < 10, 10, 20)', pears: 5) #=> 10 calculator.evaluate('if (pears < 10, 10, 20)', pears: 15) #=> 20
内置运算符和函数
数学:+
, -
, *
, /
, %
, ^
, |
,&
比较:<
, >
, <=
, >=
, <>
, !=
, =
,
逻辑:IF
, AND
, OR
, XOR
, NOT
,SWITCH
数字:MIN
, MAX
, SUM
, AVG
, COUNT
, ROUND
, ROUNDDOWN
,ROUNDUP
字符串:LEFT
, RIGHT
, MID
, LEN
, FIND
, SUBSTITUTE
, CONCAT
,CONTAINS
集合: MAP
, FILTER
, ALL
, ANY
,PLUCK

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 从实战出发,聊聊缓存数据库一致性
在云服务中,缓存是极其重要的一点。所谓缓存,其实是一个高速数据存储层。当缓存存在后,日后再次请求该数据就会直接访问缓存,提升数据访问的速度。但是缓存存储的数据通常是短暂性的,这就需要经常对缓存进行更新。而我们操作缓存和数据库,分为读操作和写操作。 读操作的详细流程为,请求数据,如缓存中存在数据则直接读取并返回,如不存在则从数据库中读取,成功之后将数据放到缓存中。 写操作则又分为以下 4 种: 先更新缓存,再更新数据库 先更新数据库,再更新缓存 先删除缓存,再更新数据库 先更新数据库,再删除缓存 一些一致性要求不高的数据,如点赞数等,可以先更新缓存,然后再定时同步到数据库。而在其它情况下,我们通常会等数据库操作成功,再操作缓存。 下面主要介绍更新数据库成功后,更新缓存和删除缓存这两个操作的区别和改进方案。 先更新数据库,再删除缓存 先更新数据库,再删除缓存,这种模式也叫 cache aside,是目前比较流行的处理缓存数据库一致性的方法。 它的优点是: 出现数据不一致的概率极低,实现简单 由于不更新缓存,而是删除缓存,在并发写写情况下,不会出现数据不一致的情况 出现数据不一致的情况出现在...
- 下一篇
Linux 新提议,JFS 文件系统面临弃用和删除
在去年年初,SUSE 的开发者向 Linux 内核提交了一个 v2 补丁,该补丁将 ReiserFS 文件系统标记为已弃用,并将会在 2025 年从内核中正式删除它。删除的原因主要是过去十多年该文件系统都不再活跃,并且在现代内核的生产用例中也不太可能再使用。 基于差不多的原因,日前开发者也开始着眼讨论 Journaled File-System(JFS)文件系统是否还应该在内核中继续保留的问题。 内核开发者 Christoph Hellwig 在邮件列表中表示: 不久前,我们已经弃用了 ReiserFS,并计划将其删除。看着 JFS 中的代码,我想知道我们是否也应该这样做。虽然 JFS 不像 ReiserFS 那么复杂,但它的使用率也很低,而且从未成为任何主要发行版中的默认文件系统。 1990 年,IBM 为 AIX 3.1 开发了 JFS 文件系统(在系统崩溃或断电的情况下,这种文件系统可以更快地恢复),第二代则实现在开源后被移植到了 Linux。因此 JFS 在过去的二十多年时间里,一直存在于 Linux 中。 就如开发者 Christoph Hellwig 所说,JFS 并没有被...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启