前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rhai 基础之数值计算和格式化

rhai 基础之数值计算和格式化

作者头像
niqin.com
发布2022-06-30 16:24:38
4780
发布2022-06-30 16:24:38
举报
文章被收录于专栏:Rust 生态与实践

临近除夕夜,首先给各位朋友拜年了:祝您牛年心想事成,身体健康!

笔者最近在项目中对于 Rust 语言的嵌入式脚本引擎 rhai 进行了些许应用,感觉对于从事 Rust 开发的朋友,引入 rhai crate 可以提高开发效率。如果您的 Rust 应用集中于互联网及其 web 开发方面,那么使用和 Rust 语法非常类似的 rhai 替代 JavaScript,可以提高开发效率和运行性能。

关于 rhai 的介绍,请参阅 Rhai - Rust 的嵌入式脚本引擎Rhai 脚本引擎的简单应用示例 两篇图文。

rhai 语言中,和 Rust 类似,整数类型支持十进制、二进制、八进制,以及十六进制的标记符号。默认的整数类型(别名为 INT)是 i64。i64 可以通过 only_i32 转换为 i32。

rhai 也支持浮点数。默认的系统浮点类型是 f64(别名为 FLOAT)。f64 可以通过 f32_float 转换为 f32。

“_” 下划线分隔符可以自由添加,并且在数值中被忽略——除了在最开始位置或小数点(“.”)之后。

我们看一些示例:

格式

类型

123_345, -42

INT,十进制

0o07_76

INT,八进制

0xabcd_ef

INT,十六进制

0b0101_1001

INT,二进制

123_456.789, -42.

FLOAT

rhai 的数值计算和操作,和 Rust 是基本相同的。基本的操作符,以及内置函数(如 sin、cos、abs、round 等等)都完全支持。

但格式化输出支持方面,进行了诸多删减。因为 rhai 是 no_std 的 Rust,目前不支持 Rust 中的 format、print/println、write 等宏操作。

但实际应用中,对于格式化输出是必须的基础要求。如果您是在 Rust 代码中嵌入 rhai 脚本,那么可以通过在 format、print/println、write 等宏中直接调用 rhai 的计算结果。

但如果您需要应用独立的 rhai 脚本替代诸如 JavaScript 等,以直接将其输出到 html 中,则需要有一些变通。比如,我想在模板或者 react、vue 中用 rhai 脚本替代部分 JavaScript,进行数值输出的格式化:将整数数值转换为以 k(1000)为单位的格式,并四舍五入,以及仅保留一位小数。在 Rust 代码中,直接调用 format 宏,然后进行格式化输出即可。在 rhai 中,我们仍然调用 Rust 的操作符以及内置函数,但输出格式需要一些变通。如下代码示例:

代码语言:javascript
复制
// 通过 html 传递需要计算的数值
let number = params[0];

if number < 1000 {
    number
} else {
    // 因为我们需要输出小数的格式,因此:
    // 1、将 int 转换为 float;
    // 2、先除以 100.0,然后四舍五入。
    // 3、四舍五入后,类型仍然是 float(如123.0)。
    // 4、再除以 10.0,输出即保留一位小数
    (number.to_float() / 100.0).round() / 10.0 + "k"
}

笔者对于 rhai 脚本引擎,虽然体验较多,但目前应用还是皮毛,此三篇图文仅为推荐。感兴趣的朋友可以访问网站:https://rhai.budshome.com,以作详细了解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust 生态与实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档