2016-10-15 1 views
2

j'ai une structure imbriquée de modules comme celui-ci:`using` un module interne avec son symbole, dans une structure imbriquée de modules

module TestMod 
    module B 
    export BB 
    module BB 

    end 
    end 
    module C 
    module D 
     #using ...B 
     importall ...B 
     using BB # => ERROR: ArgumentError: Module BB not found in current path. 
    end 
    end 
end 

Je veux faire using BB en module D mais il semble que la seule façon est d'écrire un chemin complet pour BB (par exemple using B.BB), à la fois import ou using n'aident pas.

Répondre

4

Une fois que vous avez utilisé B, vous pouvez faire une importation relative à partir du module actuel vers tous les modules exportés de B, y compris BB. Voir

julia> module TestMod 
     module B 
      export BB 
      module BB 
      x = 2 
      export x 
      end 
     end 
     module C 
      module D 
      using ...B 
      using .BB 
      println(x) 
      end 
     end 
     end 
2 
TestMod 

La syntaxe using .BB signifie d'utiliser le module avec le nom BB dans le module courant, alors que using BB signifie en utilisant le module de niveau supérieur BB; Autrement dit, il va chercher Main.BB, ce qui n'est pas ce que vous voulez.