为什么Julia 1.2版本中≈(isapprox)无法使用atol参数?
解决Julia 1.2中
≈运算符不支持关键字参数的兼容性问题 哦,这个问题我之前踩过坑!核心原因是Julia版本间的语法规则变化:在1.0.x系列(比如你用的1.0.3)里,≈(近似相等)运算符允许直接搭配atol这类关键字参数,但从1.2版本开始,官方调整了这个逻辑,运算符本身不再接受关键字参数,得换用对应的函数写法。
为什么会出现这个错误?
- 在Julia 1.0.x中,
≈运算符的底层实现兼容了关键字参数传递,所以@test π ≈ 3.14 atol=0.01能正常执行。 - 但到了1.2版本,官方为了让运算符行为更统一(大部分二元运算符都不支持关键字参数),把
≈的关键字参数支持转移到了配套的isapprox()函数中,直接给运算符加关键字参数就会抛出你看到的function ≈ does not accept keyword arguments错误。
通用解决方案(兼容所有版本)
最稳妥的写法是直接使用isapprox()函数替代运算符,这个写法在Julia 1.0.3和1.2中都能正常运行:
using Test @test isapprox(π, 3.14, atol=0.01)
你可以自己验证一下:在Julia 1.2中执行isapprox(π, 3.14, atol=0.01)会返回true,把它放到@test里就能顺利通过测试了。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

