2017-08-11 16 views
1

私はジュリア0.6、今Iポートが、それは私が今構文:「幅」のために複数の型宣言

syntax: multiple type declarations for "width"

たときに、このエラーが出ることを、0.5.2でうまく実行するために使用私のコードを使用していますIパッケージ全体のgrep -rn "width" *私はこの結果

coolFile.jl:11: local const width::Int64 = Int64(sqrt(modulation)) 
coolFile.jl:12: local const mapSize::Tuple{Int64, Int64} = (width, width) 
coolFile.jl:19:  local const minValue::Float64 = minimumDistance/2 - minimumDistance * width/2 
coolFile.jl:20:  for y in 1:width 
coolFile.jl:22:  for x in 1:width 
coolFile.jl:44:  for i in 1:2:width 
coolFile.jl:45:  local const startIndex = 1 + width*i 
coolFile.jl:46:  inplaceReverse(startIndex:(startIndex + width - 1)) 

を取得し、私は幅の唯一の宣言と定義を参照してください。このコードはすべてコンストラクタ内にあります。 11行目はコンストラクタ本体の最初の行です。私は盲目で、どこかにwidth::Bananas = -69105を書きましたか?

+0

同じセッションでcoolFile.jl(またはその中の関数)を複数回インポートしようとしましたか? –

+0

'width'の後の' :: Int64'は不要です。型は 'Int64(sqrt(modulation))'によって決まります。エラーメッセージは少し不明です。 –

+0

@AlexanderMorleyいいえ、それは問題ではありません。なぜなら、コンストラクタをスコープしたローカル変数であるからです。 – Nozdrum

答えて

0

明らかに、私のすべての変数のlocal constが原因です。私は理由はわかりませんが、1つの指定子を削除すると(どちらの問題でもかまいません)、その無駄なエラーメッセージが消える原因となります。

0.6のリリースノートに記載されていることはありません。

誰かが私を落胆して以来(良い仕事の男!、解決策をdownvoting)。ここに自己完結型の例があります。

struct Shit 
    a::Int64 
    function Shit(b::Int64) 
     local const c::Int64 = b * 3 
     new(c) 
    end 
end 

ERROR: LoadError: syntax: multiple type declarations for "c" 
Stacktrace: 
[1] include_from_node1(::String) at .\loading.jl:569 
[2] include(::String) at .\sysimg.jl:14 
[3] process_options(::Base.JLOptions) at .\client.jl:305 
[4] _start() at .\client.jl:371 
while loading ~\shit.jl, in expression starting on line 1 

localconstまたはタイプ::Int64いずれかが再び動作コードになり取り外し。

+0

ああ.. ':: Int64'を削除するとうまくいきません。私はそれが私が走っていた特定のバージョンでしかないと思った。 –

関連する問題