Julia没有自动类型转换功能

max*_*max 5 type-conversion julia

编辑:

这只是一个已修复的错误.我更新到Julia Version 0.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()
Run Code Online (Sandbox Code Playgroud)

该错误只是转换错误.

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
Run Code Online (Sandbox Code Playgroud)

我知道我可以在数字末尾添加一个小数点(即"3"),以便在分配之前将其转换为浮点数.但是,如果自动转换仅在函数内部工作,那么我正在处理的项目会更容易.

我究竟做错了什么?

Chr*_*kas 1

解决此问题的方法是使用 Julia 版本 >=v0.3。请注意,某些语法在 v0.4 中已弃用,因此不适用于较新的版本。