【问题标题】:Julia no automatic type conversion inside functionJulia 函数内部没有自动类型转换
【发布时间】:2014-08-04 02:32:57
【问题描述】:

编辑:

这只是一个已修复的错误。 我更新到 Julia 版本 0.3.0-rc1+32 并且代码运行没有错误。

https://github.com/JuliaLang/julia/issues/7830#event-148849792


Julia 从 Int 到 Float 的自动类型转换在函数内部不起作用。有没有简单的方法让它工作?

用一些代码我的问题会更清楚:

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.”),以便在赋值之前将其转换为浮点数。但是,如果自动转换仅在函数内部工作,我正在处理的项目会容易得多。

我做错了什么?

【问题讨论】:

  • 这种问题最好在 julia-users 列表中提出。如果有错误,那么 github 问题也是合适的。
  • 谢谢,我会把它移到那里。
  • 有趣。如果您在函数中添加“全局实例”,它似乎可以工作
  • 这是一个已修复的错误。 github.com/JuliaLang/julia/issues/7830#event-148849792
  • 这个问题可能值得标记为已回答,即使它是一个错误修复...

标签: type-conversion julia


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多