【问题标题】:local variable T conflicts with a static parameter warining局部变量 T 与静态参数警告冲突
【发布时间】:2015-12-27 04:59:33
【问题描述】:

我收到了我不明白的警告。

我首先运行以下代码:

type PDF{T <: Real}
    ????::Vector{Float64} # K
    μs::Matrix{T} # D x K
    Σs::Vector{Matrix{T}} # K{D x D}
end


type Q{T <: Real}
    w::Union{Float64, Vector{Float64}}
    μpair::Union{Vector{T}, Matrix{T}}
    Σpair::Union{Matrix{T}, Tuple{Matrix{T}, Matrix{T}} } # K{D x D}
end

type Smod{T <: Real}
    H::Matrix{T} # D x D
    Σs::Vector{Matrix{T}} # K{D x D}
    qs::Vector{Q{T}}
end


type Scale{T <: Real}
    μ::Vector{T} # D
    Σ::Matrix{T} # D x D
end

type Parameters{T <: Real}
    scale::Scale{T}
    w::Vector{Float64}
    maxNumCompsBeforeCompression::Integer
    numComponentsAbsorbed::Integer
end

type KDE{T}
    pdf::PDF{T}
    smod::Smod{T}
    params::Parameters{T}
end

之后我在 IJulia 中运行以下 sn-p

function initializeKDE{T <: Real}(x::Vector{T})

    d = size(x,1)
    T = typeof(x)

    ???? = ones(Float64, 1)
    μs = Array(T, d,1)
    μs[:,1] = x
    Σs = Array(Matrix{T}, 0)
    pdf = PDF(????, μs, Σs)

    H = zeros(T, d,d)
    qs = Array(Q{T}, 0)
    smod = Smod(H, Σs, qs)

    scale = Scale(x, H)

    w = [0.0, 1.0]

    maxNumCompsBeforeCompression = min(10, (0.5d^2 + d))
    numComponentsAbsorbed = 0
    params = Params(scale, w, maxNumCompsBeforeCompression, numComponentsAbsorbed)

    kde = KDE(pdf, smod, params)

    return kde::KDE
end

我收到以下警告:

WARNING: local variable T conflicts with a static parameter in initializeKDE at In[4]:3.

其中In[4]:3对应第二个sn-p的第三行。

谁能用人类英语解释这个警告的意思?

【问题讨论】:

    标签: class object types static julia


    【解决方案1】:

    这表示您正在尝试以两种不同的方式使用T:一次作为“静态参数”,一次作为局部变量。

    首先,您使用T 作为参数化函数initializeKDE

    function initializeKDE{T <: Real}(x::Vector{T})
    

    但是你试图在第三行重新定义一个新的T

        T = typeof(x)
    

    你想在这里做什么?如果您尝试将 T 定义为向量 x 包含的元素的类型,那么您应该删除这一行,一切都应该正常工作 -- T 将自动采用元素类型 (@987654330 @) 传递给initializeKDE 函数的向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      相关资源
      最近更新 更多