【问题标题】:How to return variable in Julia error variable is not defined如何在 Julia 错误变量中返回变量未定义
【发布时间】:2016-05-20 21:07:30
【问题描述】:

你好,我有问题,我试图返回我定义的变量,但我得到一个错误变量未定义

type Family
        name:: AbstractString
        value:: Int
        left:: Nullable{Family}
        right:: Nullable{HuffmanNodeA}  
        Family(name:: AbstractString, value::Int ) = new(name, value , Nullable{Family}(), Nullable{Family}())
        end

A = [Family("Julia", 24), ...]

function minimalnia() 
global Family family
min = A[1].value
for i in A
if(i.value < min )
mininmalny = i.value
family = i 
end 
end
println(i)
return family
end 

我收到错误“未定义家庭”,为什么会收到此错误,如何更正我的代码?

【问题讨论】:

  • 请只发布可以使用的代码。 HuffmanNodeA 未在您的代码中定义。也请使用正确的缩进发布,即使这在 Stackoverflow 中是一个很大的痛苦。
  • 我刚刚发现您可以直接发布代码,然后使用顶部带大括号的按钮让代码看起来不错。

标签: julia


【解决方案1】:

您的代码中有很多错误。 您应该从简单的事情开始并构建它,确保它在每一步都有效。

这是一个有效的简化版本供您比较,以了解您做错了什么:

type Family
    name::UTF8String
    value::Int
end


function minimal(families::Vector{Family}) 
    minfamily = Nullable{Family}()

    minval = families[1].value  # will not work if families is empty
    for f in families

        if f.value < minval
            minval = f.value
            minfamily = f 
        end 
    end

    return minfamily
end 

F1 = [Family("Julia", 24)]
@show minimal(F1)

F2 = [F1; Family("Yullia", 23)]
@show minimal(F2)

但是,由于您只是在寻找数组中的最小值,因此使用 Julia 有一种更简单的方法。

【讨论】:

  • 我不能使用 UTF8String 作为我的名字,因为我不能将这个用于左 i 右的 Family 类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 2016-11-04
相关资源
最近更新 更多