2017-08-11 2 views
1

J'utilise julia 0.6, mon code utilisé pour exécuter sur 0.5.2 bien, maintenant que le port I j'obtenir cette erreursyntaxe: plusieurs déclarations de type pour "largeur" ​​

syntax: multiple type declarations for "width"

Maintenant, quand Je grep -rn "width" * sur l'ensemble du paquet que je reçois ce résultat

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)) 

Je ne vois qu'une seule déclaration et la définition de la largeur. Tout ce code est à l'intérieur du constructeur. La ligne 11 est la première ligne du corps du constructeur. Suis-je juste aveugle et a écrit width::Bananas = -69105 quelque part?

+0

avez-vous essayé d'importer le coolFile.jl (ou la fonction dans) plus d'une fois dans la même session? –

+0

Le ':: Int64' après' width 'n'est pas nécessaire, le type est déterminé par 'Int64 (sqrt (modulation))'. Le message d'erreur est un peu flou. –

+0

@AlexanderMorley non et cela ne devrait pas importer, puisqu'il s'agit d'une variable locale portée par le constructeur. – Nozdrum

Répondre

0

Apparemment, le local const sur toutes mes variables est à l'origine du problème. Je ne sais pas pourquoi, mais supprimer un spécificateur (peu importe lequel) provoque la disparition de l'erreur avec son message d'erreur inutile.

Il n'y a pas non plus de mention de cela dans les notes de version de 0.6.

Depuis que quelqu'un m'a rabaissé (bon travail homme !, downvoting une solution). Voici un exemple auto-contenu.

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 

Suppression soit local, const ou le type ::Int64 se traduira par le code de travail à nouveau.

+0

Ah .. donc supprimer ':: Int64' fonctionne. Je pensais que c'était seulement sur la version spécifique que je courais. –