ReScript中模运算符%使用报错,求正确用法及替代关键字
ReScript 模运算符的正确用法
在ReScript中,不能直接使用%作为模运算符——因为%是语法扩展的前缀标记(比如%raw、%bs这类内置扩展),直接写20 % 2会被解析器误认为是语法扩展的起始,从而抛出"Did you forget a , here?"的错误。
正确实现模运算的方式是使用mod关键字,示例代码如下:
Js.log(20 mod 2) // 输出 0
需要注意,mod的运算规则遵循OCaml标准,结果的符号与被除数一致:
- 正数运算:
7 mod 3→1 - 负数运算:
(-7) mod 3→-1,7 mod (-3)→1
如果需要和JavaScript原生%运算符行为一致(结果符号与除数一致),可以自行封装函数:
let jsMod = (a, b) => { let result = a mod b result * b < 0 ? result + b : result } Js.log(jsMod(-7, 3)) // 输出 2,和JS中 (-7) % 3 结果一致
内容的提问来源于stack exchange,提问作者glennsl
相关产品推荐
相关产品推荐

