1
從朱莉婭:類型推斷在常量和非常量全局變量之間有何不同?
下面的示例計算當前 元件和沿1-d網格其左,右相鄰的一個加權平均值。 :
julia> const x = rand(8) 8-element Array{Float64,1}: 0.843025 0.869052 0.365105 0.699456 0.977653 0.994953 0.41084 0.809411 julia> [ 0.25*x[i-1] + 0.5*x[i] + 0.25*x[i+1] for i=2:length(x)-1 ] 6-element Array{Float64,1}: 0.736559 0.57468 0.685417 0.912429 0.8446 0.656511
注
在上面的例子中,
x
被聲明爲常量,因爲在朱莉婭的類型推斷 不上非恆定的全局變量正常工作。生成的數組類型從表達式推斷出來;爲了使 明確地控制該類型,該類型可以被預先考慮到 的理解。例如,在上面的例子中,我們本來可以避免 聲明x作爲常數,確保了結果的類型 Float64以書面形式:
Float64[ 0.25*x[i-1] + 0.5*x[i] + 0.25*x[i+1] for i=2:length(x)-1 ]
什麼是接近尾聲的說明是什麼意思?也就是說,類型推斷在常量和非常量全局變量之間有何不同?
如果取出'const',你最終得到的'6個元素的數組任何',而不是'Float64'。請注意,如果您將代碼移入函數中,即使沒有「const」,您也會得到一個「Float64」數組。但是,我不太瞭解類型推斷行爲以充分回答您的問題。 –
參考:問題[#8870](https://github.com/JuliaLang/julia/issues/8870) – SalchiPapa