编辑:
这只是一个已经被修复过的bug。我更新到JuliaVersion0.3.0-Rc1+32,代码运行时没有出错。
https://github.com/JuliaLang/julia/issues/7830#event-148849792
从Int到Float的Julia自动类型转换在函数内部不起作用。有什么简单的方法可以让它发挥作用吗?
我的问题会用一些代码更清楚:
type A
a::FloatingPoint
end
instance = A(1)
#println("$instance") -> A(1.0)
#FINE
instance.a = 2
#println("$instance") -> A(2.0)
#THROWS ERROR
function fn()
instance.a = 3
end
fn()
这个错误只是一个转换错误。
ERROR: type: setfield!: expected FloatingPoint, got Int64
in fn at /home/john/Desktop/test.jl:18
in include at ./boot.jl:245
in include_from_node1 at loading.jl:128
in process_options at ./client.jl:285
in _start at ./client.jl:354
while loading /home/john/Desktop/test.jl, in expression starting on line 20
我知道我可以在数字的末尾加一个小数点(即“3”)。以便在赋值前将其转换为浮点数。但是,如果自动转换只是在函数内部工作,我正在处理的项目就会容易得多。
我做错了什么?
发布于 2016-08-09 21:48:05
解决这个问题的方法是使用朱莉娅发布的>=v0.3。注意,在v0.4中不推荐使用OP的一些语法,因此不适用于较新的版本。
https://stackoverflow.com/questions/25111050
复制