Julia: рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣рдЯрд╛рдПрдВ, рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдФрд░ рд╢рд╛рдпрдж рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЕрдЧре░ 2014  ┬╖  72рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: JuliaLang/julia

рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗ:

рд╕реНрдЯреАрдлрди:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрд╕

рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдмрд╛рд░

рдкрд╣рд▓рд╛ рдлреВ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ "рд╕реЙрдлреНрдЯ" рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдЧрд╛ (рдЕрдм рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рджреВрд╕рд░рд╛ рднреА рдлреВ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд▓реЛрдб рдФрд░ рдмрдирд╛ рджреЗрдЧрд╛, рдФрд░ рдмрд╛рд░ рдХреЛ "рд╣рд╛рд░реНрдб" рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдЧрд╛ (рдЕрдм рдХреНрдпрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ)ред"

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдХрд╛рдлреА рдЙрд▓рдЭрди рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред

breaking design modules speculative

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ import рдФрд░ export рдХреА рд╕рдорд░реВрдкрддрд╛ рдкрд╕рдВрдж рд╣реИред (рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдХрд╣реАрдВ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ рд╣реИред)

рд╕рднреА 72 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ import Foo рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ Foo рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ

using Foo: ?

using Foo: Foo ?

Foo рдХреЛ рдлреВ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рдХреБрдЫ рдирд╣реАрдВ):
import Foo
Foo рдХреЛ рдореЙрдбреНрдпреВрд▓ рдлреВ рд╕реЗ, x рдХреЛ Foo.x рд╕реЗ, y рдХреЛ Foo.y рд╕реЗ рдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
import Foo: x, y
рдореЙрдбреНрдпреВрд▓ рдлреВ рдХреЗ рд▓рд┐рдП Foo рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдлреВ рдХреЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдирд╛рдо рдЕрдпреЛрдЧреНрдп рд╣реИрдВ:
import Foo: *

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ using рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ import рдХреА рднрд╛рд╡рдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдпрд╣ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рдиреЗ рдФрд░ рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рдФрд░ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдПред

рдПрдХ рдордЬрдмреВрдд рдорд╛рдорд▓рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдирд░рдо ( using ) рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ рд╣рд╛рд░реНрдб ( importall ) рдмрд╛рдЗрдВрдбрд┐рдВрдЧред рдорд╛рди рд▓реАрдЬрд┐рдП рдореЙрдбреНрдпреВрд▓ рдП рдореЙрдбреНрдпреВрд▓ рдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ foo(::Any) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдмреА рдХреА рдмрд╛рдж рдХреА рд░рд┐рд▓реАрдЬрд╝ рднреА foo(::Any) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдкрдХрдбрд╝реЗрдВред рдЖрдк рдореЙрдбреНрдпреВрд▓ рдмреА рдХреЛ foo(::Int) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдП рдХреЛ рдХрднреА-рдХрднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдпрд╛ рдЙрди рд╕рднреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдмреА рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрдХрд▓ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ рдЙрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдпрд╛ рддреЛ рдЖрдк рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рд╛рд░реНрдб рдФрд░ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╛рди рд╣реИ, рдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрд┐рдирд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдкрдХреЛ рд╕реВрдЪреА рд╕реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореБрдЭреЗ @StefanKarpinski рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИред рд╕рдВрдХрд▓реНрдкрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рд╣рд╛рд░реНрдб рдФрд░ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╣реА рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╕рднреА рдЙрдкрдпреЛрдЧреА рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рддреБрдореНрд╣рд╛рд░реА рдмрд╛рдд рд╕рд╣реА рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореБрдЭреЗ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИ рдХрд┐ using Foo: (рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рд╕рд╛рде рд▓реЗрдХрд┐рди рдХреЛрдИ рдЖрдЗрдЯрдо рдирд╣реАрдВ) рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХрд┐рд╕реА рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЦрд╛рд▓реА рдкрд┐рдЫрд▓рд╛ : рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрджрдд рд╣реЛ рдЬрд╛рдПрдЧреА

рдЦрд╛рд▓реА рдЕрдиреБрдЧрд╛рдореА рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдирд╛рдо рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ - рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ using Foo: рдХреЛ рдЕрдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд: #4600

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЬреВрд▓рд┐рдпрд╛ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ
рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рди, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рддрд░реАрдХрд╛ рд╣реЛред

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдлреВ.рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд░реНрддрдорд╛рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╣реИ
рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд; рдпрд╣ рдлреВ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлреВ.рдмрд╛рд░ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ (рдЬрдм рддрдХ рдХрд┐ рдлреВ.рдмрд╛рд░ рдирд╣реАрдВ рд╣реИ
рдПрдХ рдореЙрдбреНрдпреВрд▓?)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреАрдлрди рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ, рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдлреВ

рдЧреБрд░реБрд╡рд╛рд░, 14 рдЕрдЧрд╕реНрдд 2014 рдХреЛ toivoh [email protected] рдиреЗ рд▓рд┐рдЦрд╛:

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЬреВрд▓рд┐рдпрд╛ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ
рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рди, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рддрд░реАрдХрд╛ рд╣реЛред

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдлреВ.рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд░реНрддрдорд╛рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╣реИ
рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд; рдпрд╣ рдлреВ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлреВ.рдмрд╛рд░ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ (рдЬрдм рддрдХ рдХрд┐ рдлреВ.рдмрд╛рд░ рдирд╣реАрдВ рд╣реИ
рдПрдХ рдореЙрдбреНрдпреВрд▓?)

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/JuliaLang/julia/issues/8000#issuecomment -52202142ред

@kmsquire рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдлреВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдлреВ рдореЙрдбреНрдпреВрд▓ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред

рдпрд╣ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рддреНрд░реБрдЯрд┐ рд╣реИ (рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛

рдореБрдЭреЗ рд╕рдмрд╕реЗ рдКрдкрд░ @ssfrr рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд╕рдВрдж рд╣реИред

рдХреНрдпрд╛ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдореНрдореЗрд▓рди рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╣реИ? -- рд╕реЗ import Foo рдХрд╛ рдЕрд░реНрде рд╣реИ Foo Foo ред рдХреЛрдИ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ Foo рдХрд╛ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдлреВ, рдкреИрдХреЗрдЬ рдореЗрдВ Foo.jl рдФрд░ рдЗрд╕рдХреЗ рднреАрддрд░ module Foo рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реИред

рдореИрдВ рдмреА/рд╕реА рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ import рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп/рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ src/foo.jl рдФрд░ src/bar.jl рд╣реИ рддреЛ foo.jl рдореЗрдВ:

import bar

src/bar.jl рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ред рдпрд╣ include рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рднреАрддрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рд╣рд╛рдВ, рдкреИрдХреЗрдЬ, рдкреИрдХреЗрдЬ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдПрдХ-рд╕реЗ-рдПрдХ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЖрдк рдЗрд╕ рдкрд░рдВрдкрд░рд╛ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЬреНрдпрд╛рджрд╛ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд░реНрдл рдирд╛рдордХрд░рдг рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдХрд╛рдЗрдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдЖрдк рдЬреЛ рд╡рд┐рдЪрд╛рд░ рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ #4600 рд╣реИ, рд╕рд┐рд╡рд╛рдп рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ import .bar рд╣реИ рдЬрдмрдХрд┐ import bar рдПрдХ рдкреВрд░реНрдг рдЖрдпрд╛рдд рд╣реИред

@StefanKarpinski рдХреНрдпрд╛ import .bar рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ "bar.jl" рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдерд╛ рдХрд┐ import .Bar рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрджрд╛ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрджреНрдпрддрди: рджреБрд╣, рдпрд╣реА рдЖрдк # 4600 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдорд╛рдлрд╝ рдХрд░рдирд╛ред

:+1:. рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ 0.4 рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реЛрдЧрд╛ред

:+1: рдХреГрдкрдпрд╛ рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВ (0.4 рдХреЗ рд▓рд┐рдП!)

рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рди рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЖрдпрд╛рдд рддрдВрддреНрд░ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдХреАрд╡рд░реНрдб рдпрд╛ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╛рдЗрдЯ рдкрд░ рд╣реА рд╕рд┐рдЧреНрдирд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреНрдпреЛрдВ рдирд╣реАрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдХреАрд╡рд░реНрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ? рдЬрд╛рд╡рд╛ рдореЗрдВ @Override рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рдорд╛рдиред

рдЗрд╕рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рджреВрд╕рд░реЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣рд╛ рд╣реИ (рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ)

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ, @ssagaertред рдЖрдк рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдХрд░ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Base.print(тАж) = тАж ), рдФрд░ рдпрд╣ рдПрдХ рдРрд╕реА рд╢реИрд▓реА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрднрд┐рд╕рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХрдорд╛рддреНрд░ рд╕реНрдЯрд┐рдХрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдирд╛рдореЛрдВ (рдЬреИрд╕реЗ .+ , рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

(рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рдЕрдиреНрдп рдЧрд┐рдЯрд╣рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдмреИрдХрдЯрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ)ред

:+1: @override рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ @ssagaert рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП, рдореВрд▓ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЬрдм рдХреЛрдИ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рддреЛ рдкрд╣рд▓реЗ рдЗрд╕ рддрд░рд╣ рдкрдврд╝рддрд╛ рд╣реИ:

ERROR: error in method definition: function Foo.x must be explicitly imported to be extended

рддреЛ рд╢рд╛рдпрдж @extend рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдореВрд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ _override_ рдХрд╛ рдЕрд░реНрде рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ: рд░рджреНрдж рдХрд░рдирд╛, рд╢реВрдиреНрдп рдХрд░рдирд╛, рдЕрдорд╛рдиреНрдп рдХрд░рдирд╛, рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛, рд░рджреНрдж рдХрд░рдирд╛, рд░рджреНрдж рдХрд░рдирд╛, рдмрдВрдж рдХрд░рдирд╛, рдЖрджрд┐ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ:

<strong i="13">@extend</strong> Base.show(...) = ...

рд╕реЗ:

import Base: show

# ... several lines here

Base.show(...) = ...

@ рдЗрд╕реНрдорд╛рдЗрд▓-рд╡реАрд╕реА Base.show(...) = ... рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рднреА рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред import рдХреЗрд╡рд▓ рддрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрдм рдЖрдк show(...) = ... рдХреЛ Base.show рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@ рдЗрд╕реНрдорд╛рдЗрд▓-рд╡реАрд╕реА рдУрд╡рд░рд░рд╛рдЗрдб рд╢рдмреНрдж рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрдЭрд╛рд╡ рдерд╛ред рдЗрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░ рд╕рд╛рд░реНрдердХред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ @ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдореИрдХреНрд░реЛ ( @Override рдЬрд╛рд╡рд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рд╣реИ)ред

@ рд╕рд┐рдореЛрдВрд╕реНрдЯрд░ рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛!

@ssagaert рддреЛ рдЖрдкрдХрд╛ рдорддрд▓рдм рдПрдХ рдХреАрд╡рд░реНрдб рд╣реИ? рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдореИрдХреНрд░реЛ-рдлреВ рдкрд░ рдЪреВрд╕рддрд╛ рд╣реВрдВ:

module Extend

export <strong i="9">@extend</strong>


macro extend(x)
    mod = x.args[1].args[1].args[1]
    met = x.args[1].args[1].args[2]
    imp = :(Expr(:import, $mod, $met))
    :(Expr(:toplevel, $imp, $(esc(x))))
end


end

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рдореИрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬреЛ рдХрд┐ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ:

julia> using Extend

julia> type Foo end

julia> <strong i="13">@extend</strong> Base.show(x::Foo) = Foo
:($(Expr(:toplevel, :($(Expr(:import, Base, :show))), show)))

julia> parse("import Base.show; Base.show(x::Foo) = Foo")
:($(Expr(:toplevel, :($(Expr(:import, :Base, :show))), :(Base.show(x::Foo) = begin  # none, line 1:
            Foo
        end))))

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдХрд╛рдордХрд╛рдЬреА @extend рдореИрдХреНрд░реЛ рдЖрдпрд╛рдд рддрдВрддреНрд░ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

@ рдЗрд╕реНрдорд╛рдЗрд▓-рд╡реАрд╕реА рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ @mbauman рдХреА 'рдЪрд╛рд▓' рднреА рдкрд╕рдВрдж рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдпрд╣"ред рддреЛ рдЖрдк рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐:
import Base: . (рдорддрд▓рдм рдЖрдпрд╛рдд Base.Base )
рдпрд╛
using ..

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП https://github.com/JuliaLang/julia/pull/11891#issuecomment -116098481 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╢рд╛рдпрдж рдпрд╣ . рд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рдж рдирд╣реАрдВ, рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИред 1.0 рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ 0.6 рдлреАрдЪрд░ рдлреНрд░реАрдЬ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ

рдХрд▓ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмрд╛рдж рдореИрдВ https://github.com/JuliaLang/julia/issues/8000#issuecomment -52142845 рдФрд░ https://github.com/JuliaLang/julia/ рдЬреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреА рдУрд░ рдЭреБрдХ рд░рд╣рд╛ рд╣реВрдВред

using A: x, y    # hard imports x and y from A

using A: A       # hard imports just the identifier `A`

using A: ...     # soft imports all of A's exports

using A     # equivalent to `using A: A, ...`

using A.B   # A.B must be a module. equivalent to `using A.B: B, ...`

using A: ..., thing1, thing2    # import all exports plus some non-exported things

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ import рдХреЗ рдмрдЬрд╛рдп using рд░рдЦрдирд╛ рд╣реЛрдЧрд╛:

import A             # hard binding for the module `A`
import A: ...        # soft bindings for all names exported by `A`
import A: x, y       # hard bindings for `x` and `y` from `A`
import A: x, y, ...  # equivalent to doing both of the previous two

рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣рд╛рд░реНрдб рдпрд╛ рд╕реЙрдлреНрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рд╕рд░рд▓ рд╣реЛрдЧрд╛: рдХреЛрдИ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдзрд┐рдд рдирд╛рдо рдПрдХ рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИ, рдХреЛрдИ рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЙрдлреНрдЯ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ import A; import A: ... рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреБрдЫ рдЗрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ using A рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд░рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ using A рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд░рдо рдЖрдпрд╛рдд A ); рдпрд╣ рдпрд╛ рддреЛ using A рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ import A... рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ using рдпрд╛ import рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдкрд░рд┐рд╢рд┐рд╖реНрдЯ, рд╣рдо using A рдХреЛ import A; import A: ... рдХреЗ рд▓рд┐рдП рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдпрд╛рдд рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ using A рдХрд╛рд░рдг A рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЕрдЧрд░ рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рдж рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдХреАрд╡рд░реНрдб рд╣реЛрддреЗ рддреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреАред

рдореБрдЭреЗ import рдФрд░ export рдХреА рд╕рдорд░реВрдкрддрд╛ рдкрд╕рдВрдж рд╣реИред (рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдХрд╣реАрдВ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ рд╣реИред)

рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрд╢рд╛ "рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ" рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдпреЛрдЧреНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрд▓рдЧ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ рдЬреЛ "рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджреВрд░ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

import Package: x
x = 1   # gives an error

рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣рдореЗрд╢рд╛ рдХрдареЛрд░ рдмрдВрдзрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ --- рдХреЗрд╡рд▓ рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ import рдХреЗ рдмрдЬрд╛рдп using рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рд╕реБрд░рдХреНрд╖рд╛ рдЙрди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЖрддреА рд╣реИ рдЬреЛ рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдирд░рдо рдмрдВрдзрди рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рддреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЙрдлреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬреЛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЖрдпрд╛рддрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдпреЛрдЧреНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЕрднреА рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХреЛрдИ рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ, рдЖрдкрдХреЛ import A: func рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдкреИрдХреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЖрдпрд╛рддрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рд╣реИ?

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред

рдПрдХ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рддреИрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ:

  1. рд╕рд┐рдВрдЯреИрдХреНрд╕ import A: ... . рдЬреЛрдбрд╝реЗрдВ
  2. using A: рдкрджрд╛рд╡рдирдд рдХрд░реЗрдВ
  3. using A.B рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП A.B рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд┐ рдпрд╣ import A.B; import A.B: ... рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред

рдЗрд╕ рддрд░рд╣, рд╕рдм рдХреБрдЫ рдХреЗрд╡рд▓ import рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди using X рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рднреА рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, using рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЕрд╕рдВрдЧрдд рджрд┐рдЦрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо using рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ use рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдорд╛рддреНрд░рд╛ рдХрд╛ рдард╣рд░рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдЖрдпрд╛рдд-рдлрд┐рд░-рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдЯрд░реНрди рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг:

  • рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдЙрдкрд╕рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
  • рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рддреАрдХ рдирд╣реАрдВ, рддреЛ using A: A . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • import рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмрдВрдзрди рдмрдирд╛рддрд╛ рд╣реИ

https://github.com/JuliaLang/julia/issues/8000#issuecomment -327512355 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рди рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • using A рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрдард┐рди рдЖрдпрд╛рдд A . рдореЗрдВ рдмрджрд▓реЗрдВ
  • using A: x . рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд┐рдХрд╛рд▓реЗрдВ
  • using A.x рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣рдЯрд╛рдПрдВ рдЬрд╣рд╛рдВ x рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИ
  • import A.x рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣рдЯрд╛рдПрдВ рдЬрд╣рд╛рдВ x рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИ
  • ... рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП import . рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

using A: x рдЕрдХреНрд╕рд░ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ x рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред import A: x рдореЗрдВ, рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдк x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рд░реНрдердХ рдЕрдВрддрд░ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдУ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ using A.B рджреЛ рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ B рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рддреЛ рдпрд╣ рдЕрдкрдиреЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рддреЛрдВ рдХреЛ рдирд░рдо рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдпрдерд╛ рдХреЗрд╡рд▓ рдирд░рдо рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ B ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ using A.B рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд╕реЙрдлреНрдЯ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП using A: a, b рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЕрдЧрд░ import A: x рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдерд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ import A.x рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдореИрдВ import A: x рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; import A: x, y, @z рд▓реЗрдХрд┐рди import A.x, A.y, a.@z рдмрджрд╕реВрд░рдд рд▓рдЧреЗрдЧрд╛ред

рдХреНрдпрд╛ рдЗрд╕реЗ 1.0 рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 1.0 рдХреЗ рд▓рд┐рдП using рдФрд░ import рджреЛрдиреЛрдВ рдмрдЪреЗ рд░рд╣реЗрдВрдЧреЗ? рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИред

рдХреИрд╕рд╛ рд░рд╣реЗрдЧрд╛:

  • рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдмрд▓ рдореЙрдбреНрдпреВрд▓ рдЙрдкрд╕рд░реНрдЧред рдпрд╣ рдХреЛрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рд╕реЗ рдЖрдХрд╕реНрдорд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред
  • using A рдмрди рдЬрд╛рддрд╛ рд╣реИ import A: ...
  • using A.X ( X рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ) рдЖрдпрд╛рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ A.X: ...
  • using A: X ( X рдПрдХ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИ) import A: X рдмрди рдЬрд╛рддрд╛ рд╣реИ
  • import A: X рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ X рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ (рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ рджреЗрдЦреЗрдВ)
  • using рдХреАрд╡рд░реНрдб рд╣рдЯрд╛рдПрдВ

рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ ...

рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬреЛ рдкрд╕рдВрдж рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрднреА, рдЬрдм рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдпрд╛рдд рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд░рдЦрдирд╛ рдЖрдо рдмрд╛рдд рд╣реИ (рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!) рдЬрдм рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд┐рдзрд┐ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ рддреЛ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдЖрдорддреМрд░ рдкрд░ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ рд╣реИред @JeffBezanson рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП using A рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ using A: x рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ (рдореИрдВ рдЗрд╕ рдкрд░ рдмреЗрдЪрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реВрдВ), рдпрд╣ рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдЗрд╕ рддрд░рд╣ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдмрдврд╝рд╛ рдирд╣реАрдВ рд╕рдХрддреЗред рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдФрд░ import рдХреЛ using рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рдХрд░реНрд╖рдг рдирд╣реАрдВ рдорд┐рд▓рд╛ ( import рдЕрдзрд┐рдХ рдореМрд▓рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░ рдЗрд╕рдореЗрдВ рд╣реИ:

  • рдЖрдпрд╛рдд A: x, y # x рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ y рд╕реЗ A

"рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ" рдХрд╛ рдЕрд░реНрде рдРрд╕рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдмрд┐рдирд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрдИ рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдареАрдХ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдЙрдкрд╕рд░реНрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрдИ рдбрд░рд╛рд╡рдирд╛ import рдмрдпрд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрд░реНрде рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдФрд░ using A: x рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ (рдореИрдВ рдЗрд╕ рдкрд░ рдмреЗрдЪрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реВрдВ), рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдореЙрдбреНрдпреВрд▓ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдЙрд╕ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдпрд╛ рд╣рдо рдЧреИрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ:

module M
    x = 1
end

import M: x; x = 2 рдФрд░ using M: x; x = 2 рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ ...

using A рдХреЛ import A: ... рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рд░рдЦрдирд╛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдЙрд╕ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рд╣рд╛рдВ; рдпрджрд┐ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдерд╛ рддреЛ рдпрд╣ рдмрд┐рдВрджреБ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдЧрд╛ред

рдЕрдзрд┐рдХ рдЖрдпрд╛рдд рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП A рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд░рд╣рдирд╛ A: ... рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ рд╡рд┐рдкрд░реАрдд рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ; рд▓реЛрдЧреЛрдВ рдХреЛ using A (рдЬреЛ рдЕрдЪреНрдЫрд╛ рдФрд░ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рд╣рдо рд╕рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрднреНрдпрд╕реНрдд рд╣реИрдВ) рд╕реЗ import A: ... рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдХреГрддреНрд░рд┐рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ 1 рдХреАрд╡рд░реНрдб рдЕрддреНрдпрдзрд┐рдХ рд╣реИред

рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдХреАрд╡рд░реНрдб рд░рдЦрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдореВрд▓реНрдп рдЙрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ)ред рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:

  • 1 рдХреАрд╡рд░реНрдб + рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
  • рджреЛ рдХреАрд╡рд░реНрдб, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп (рдЧреИрд░-рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд) рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ using рдФрд░ extending рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред import рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди extending рджреВрд╕рд░реЗ рдХреАрд╡рд░реНрдб рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ using рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ Foo рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ:

  • using Foo: nothing (рдЕрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
  • using Foo: Foo (рдЕрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
  • using Foo: (рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдлрд┐рд░ extending рдХреЛ using рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк extending рдХреЗ рд╕рд╛рде рд▓рд╛рдП рдЧрдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрднрд╡рддрдГ extending Foo рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ред

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░

| | рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ (рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) | рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп (рдЖрдпрд╛рдд) рдХрд░реЗрдВ|
| ------------------- | -------------------------- | ----------------------- |
| рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ | using module: module рдпрд╛ using module: nothing | import module |
| рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ | using module (рджреБрд╖реНрдкреНрд░рднрд╛рд╡: import module рдХреА рддрд░рд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) | ? |
| рдЦрд╛рд╕ рдмрд╛рддреЗрдВ | using module: x,y | import module: x,y |

рд╕реБрдЭрд╛рд╡

| | рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ (рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) | рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп (рдЖрдпрд╛рдд) рдХрд░реЗрдВ |
| ----------------- | ------------------------ | -------------------------- |
| рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ | using module | import module |
| рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ | using module: * | import module: * |
| рдЦрд╛рд╕ рдмрд╛рддреЗрдВ | using module: x,y | import module: x,y |

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдпрд╛рдиреА рдЖрдк using module рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╕реАрдзреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк nothing рдпрд╛ module рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ : x рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдк рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдЪреАрдЬрд╝ рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЖрдк рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП using: *,x рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ x рдЬреЛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд╢реНрдЪ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдордЭреМрддрд╛:

| | рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ (рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) | рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп (рдЖрдпрд╛рдд) рдХрд░реЗрдВ |
| ----------------- | ------------------------ | -------------------------- |
| рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ | using module: | import module: |
| рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ | using module: * | import module: * |
| рдЦрд╛рд╕ рдмрд╛рддреЗрдВ | using module: x,y | import module: x,y |

рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде using module рдФрд░ import module рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рдЦреЗрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВред

@FelixBenning : import Module рд╡рд░реНрддрдорд╛рди рдореЗрдВ (рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛) рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ using Module рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ Module (рдФрд░ рдХреБрдЫ рдирд╣реАрдВ) рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред .

рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рд╕реНрд▓реИрдХ рдкрд░ рдХрд╣рд╛ рд╣реИ рдЙрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрд▓реИрдХ рд╣реЛрд▓ рдореЗрдВ рдЧрд╛рдпрдм рди рд╣реЛ:

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ using X: * рдХреЛ рд╣рд░ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рдЪреАрдЬрд╝ рдмрдирд╛рдо рдХреЗрд╡рд▓ using X рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдирд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝реЛрдВ рд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рди рдХрд░ рджреЗрдЧрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдХрд┐ рджреВрд╕рд░реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЦрд░рд╛рдм рд░реВрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡реЗ рд╢рдмреНрджрд╛рд░реНрде рд╣реИрдВ рдЙрдирдХреЗ import X рдФрд░ import X: * , рдлрд┐рд░ рднреА рдЙрдирдХрд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдЙрди рд╕реНрдЯрд╛рд░ рдЖрдпрд╛рддреЛрдВ рд╕реЗ рдЕрдЯрд╛ рдкрдбрд╝рд╛ рд╣реИ ЁЯд╖тАНтЩВя╕П (рдФрд░ рд╡реЗ рдкреНрд░рд╕рд┐рджреНрдз рд░реВрдк рд╕реЗ рдЙрд╕рд╕реЗ рдирдлрд░рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд▓рдВрдмрд╛ рдЯреЗрдХреНрд╕реНрдЯ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд╣ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рд╡реЗ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдирддреЗ рд╣реИрдВ: рдмрд╕ рд╕рдм рдХреБрдЫ рдЖрдпрд╛рдд/рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЛ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рджреЗрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрд╕ рддрд╛рд░реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╛рджреБрдИ рдЧреЛрд▓реА рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рдХрд░рддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрд░реНрде рдХреЗ рд▓рд┐рдП import module: * рдФрд░ using module: * рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд░реНрде рд╣реИ рдХреНрдпреЛрдВрдХрд┐ * рдПрдХ рд╡реИрдз рдЬреВрд▓рд┐рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ + рдпрд╛ рд╢рдмреНрдж mul рдХреА рддрд░рд╣ рд╣реА рдЖрдпрд╛рдд/рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@tpapp рдпрд╛ рддреЛ рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ, рдпрд╛ import Module Module.x рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред рдЬрдмрдХрд┐ using Module: x Module.x рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП import Module рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ рдФрд░ using Module рдРрд╕рд╛ рднреА рдХрд░рддрд╛ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╣ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред
grafik
(https://docs.julialang.org/en/v1/manual/modules/ рд╕реЗ)

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╣реА рд╣реИ - рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореМрдЬреВрджрд╛ рд╕реНрдерд┐рддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рдЕрдЧрд░ рд╣рдо рдпрд╣ рднреА рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред

@mbauman рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ - рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ * рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ using рдЪреАрдЬреЛрдВ рдХреЛ рджрд░реНрдкрдг рдХрд░рдиреЗ рдХреА рд╕рдВрд░рдЪрдирд╛ import рдЖрдпрд╛рдд рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдХрд░рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЪреАрдЬреЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рддреЛ рдпрджрд┐ рдХреЛрдИ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддреАрдХ рд╣реИ - all , __all__ , everything , exported , ...? рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрдкрд▓рдмреНрдз рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдЯрд╛рдЗрдк рдХрд░рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдРрд╕рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ

| | рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ (рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) | рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп (рдЖрдпрд╛рдд) рдХрд░реЗрдВ |
| ----------------- | ------------------------ | -------------------------- |
| рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ | using module: module | import module: module |
| рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ | using module | import module |
| рдЦрд╛рд╕ рдмрд╛рддреЗрдВ | using module: x,y | import module: x,y |

рдпрд╛

| | рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ (рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) | рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп (рдЖрдпрд╛рдд) рдХрд░реЗрдВ |
| ----------------- | ------------------------ | -------------------------- |
| рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ | using module | import module |
| рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ | using module: module | import module: module |
| рдЦрд╛рд╕ рдмрд╛рддреЗрдВ | using module: x,y | import module: x,y |

рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЬреЛ рднреА рд╣реЛ, рд╡рд╣ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

using A A.f рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ, _not_ f рдЕрдкрдиреЗ рдЖрдк рдореЗрдВред _just_ f рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ import A: f рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрд╕реЗ рдЕрд░реНрд╣рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рд╣реЛрдЧреАред

using . рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

julia> module A
        export f
        f() = "no args in A"
       end
Main.A

julia> f()
ERROR: UndefVarError: f not defined
Stacktrace:
 [1] top-level scope at REPL[2]:1

julia> using .A

julia> f()
"no args in A"

julia> f(1)
ERROR: MethodError: no method matching f(::Int64)
Closest candidates are:
  f() at REPL[1]:3
Stacktrace:
 [1] top-level scope at REPL[5]:1

julia> f(x) = "one arg where?"
ERROR: error in method definition: function A.f must be explicitly imported to be extended
Stacktrace:
 [1] top-level scope at none:0
 [2] top-level scope at REPL[6]:1

julia> A.f(x) = "one arg where?"

julia> f(1)
"one arg where?"

рдФрд░ рдпрд╣ import рдХреЗ рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд▓рд┐рдП:

julia> module A
        export f
        f() = "no args in A"
       end
Main.A

julia> f()
ERROR: UndefVarError: f not defined
Stacktrace:
 [1] top-level scope at REPL[2]:1

julia> import .A

julia> f()
ERROR: UndefVarError: f not defined
Stacktrace:
 [1] top-level scope at REPL[4]:1

julia> A.f()
"no args in A"

julia> f(1)
ERROR: UndefVarError: f not defined
Stacktrace:
 [1] top-level scope at REPL[6]:1

julia> A.f(1)
ERROR: MethodError: no method matching f(::Int64)
Closest candidates are:
  f() at REPL[1]:3
Stacktrace:
 [1] top-level scope at REPL[7]:1

julia> f(x) = "one arg where?"
f (generic function with 1 method)

julia> f(1)
"one arg where?"

julia> A.f(1)
ERROR: MethodError: no method matching f(::Int64)
Closest candidates are:
  f() at REPL[1]:3
Stacktrace:
 [1] top-level scope at REPL[10]:1

julia> A.f(x) = "one arg where in A"

julia> A.f(1)
"one arg where in A"

@ рдлрд╝реЗрд▓рд┐рдХреНрд╕ рдмреЗрдирд┐рдВрдЧ : рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЧрд▓рдд рд╕рдордЭрд╛ред рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "... рдмрдирд╛рддрд╛ рд╣реИ Foo.x рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп" рднреЗрдж рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рднреНрд░рдорд┐рдд рддрд░реАрдХрд╛ рд╣реИ --- рдЖрдк рд╣рдореЗрд╢рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред using Foo: x рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ Foo рдХреЛ рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрдпреЛрдЧ рд╕реЗ, рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ #25306 рд╣рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЗрд╖реНрдЯрддрдо рддрдХ рд▓реЗ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд┐рд░реНрдгрдп рд╢реЗрд╖ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдЧреИрд░-рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдЖрдпрд╛рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ using Foo: f )ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдЯреВрдЯ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдмреАрдЪ рдореИрдиреБрдЕрд▓ рдЕрдзреНрдпрд╛рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рд╢рд╛рдпрдж рд▓рд╛рдн рд╣реЛрдЧрд╛, рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреВрд░реА рдмрд╛рдд рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд▓рдЧрддреА рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдВрдЧрд╛:

  1. using M рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ M рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирд┐рд░реНрдпрд╛рдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред
  2. рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ M рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рдЖрдк M.y рдЬреИрд╕реЗ рдпреЛрдЧреНрдп рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдП) рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рдкреНрд░рддреАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪреЗрдВ рдФрд░ (рдмреА) рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЬреЛрдбрд╝реЗрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣реЛрдВ рдпрд╛ рдирд╣реАрдВ
  3. рдЬрдм рддрдХ рдЖрдк рдпреЛрдЧреНрдп рдирд╛рдореЛрдВ рдЬреИрд╕реЗ M.f , рдпрд╛ ...
  4. ... import M: f , рддреЛ рдЖрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреЗрд╡рд▓ f рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  5. import M рдФрд░ using M: x рдХреНрд░рдорд╢рдГ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдХреНрд░рдорд╢рдГ M рдпрд╛ x (рдФрд░ M рдирд╣реАрдВ) рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдХреБрдЫ рд▓реЛрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЛрдб рдореЗрдВ рдЗрди рдлреЙрд░реНрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдирд╛рдо рд╕реНрдерд╛рди рд╕рд╛рдл тАЛтАЛрд╣реИрдВ (рдпрд╣рд╛рдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢реИрд▓реА рдЧрд╛рдЗрдб рд▓рд┐рдВрдХ рдХрд░реЗрдВ)ред

рдЖрджреЗрд╢ рдХрдореЛрдмреЗрд╢ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕рд╛рдордиреЗ рдЖрдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рдмрдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, M M.A рдХреЗ рд╕рд╛рдеред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛:

  • using M M рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ
  • using M: x M.x рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ ( x рдХреЗ рд░реВрдк рдореЗрдВ)
  • using M: ... M рдХреЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ
  • using M: x, ... M рдХреЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ рдФрд░ x (рдЬрд┐рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • рдХреЛрдИ import рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпреЛрдЧреНрдп рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (рдпрд╛ using M; const foo = M.foo рдЬреИрд╕рд╛ рдЕрдм рдХреЛрдИ рдкрд╣рд▓реЗ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред)
  • рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдореЗрдВ, M рднреА рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Foo.Bar рдФрд░ x рд╡рд░реНрддрдорд╛рди рдЕрд░реНрде рдХреЗ рд╕рд╛рде x as y рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╛ рд╣рдо using import рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рддрдм рдЗрд╕реЗ https://github.com/JuliaLang/julia/issues/8000#issuecomment -355960915 рдХреЗ рдмрд░рд╛рдмрд░ рдмрдирд╛рддрд╛ рд╣реИред

рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ (рд╡рд┐рд╢реЗрд╖рдХрд░ "рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдореЗрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рднреА рд╣реИ)

using Foo, Bar, Baz

рдФрд░ рд╕рд┐рд░реНрдл рдирд┐рд░реНрдпрд╛рддрд┐рдд рдкреНрд░рддреАрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЗрд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓, рд╕рдВрднрд╡рддрдГ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд░рдЦрдиреЗ рд╕реЗ рдХреБрдЫ рд▓рд╛рдн рд╣реЛрдЧрд╛ рдЬрд┐рддрдирд╛ рдЕрднреА рд╣реИред

@tpapp

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЧрд▓рдд рд╕рдордЭрд╛ред рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "... Foo.x рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ" рднреЗрдж рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рднреНрд░рдорд┐рдд рддрд░реАрдХрд╛ рд╣реИ --- рдЖрдк рд╣рдореЗрд╢рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореИрдВ Foo.x рдХреЗ рдмрд╛рдж using Foo: x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ (рдореЗрд░рд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВ рдХрд┐ рдпреЗ рдХрдерди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ import Foo рдиреЗ Foo.x рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдЪрдореБрдЪ Foo.x рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред рдЗрди рд╢рдмреНрджреЛрдВ рдХреЗ рд╣рд░ рдорд╛рдпрдиреЗ рдореЗрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП x рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ import Foo: x рдХреЗ рд▓рд┐рдП рд╣реИ

рдареАрдХ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореИрдВ Foo.x рдХреЗ рдмрд╛рдж using Foo: x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рддрдм рддрдХ рдирд╣реАрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ Foo рдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рддреЗ (рдЬреИрд╕реЗ using Foo )ред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВ рдХрд┐ рдпреЗ рдХрдерди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдбрд┐рд╕реНрдХреЛрд░реНрд╕ рдлреЛрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ import Foo рдиреЗ Foo.x рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд┐рдпрд╛

рдХреЗрд╡рд▓ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдпреЛрдЧреНрдп рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рд╣реИред рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ using MyModule: x, p рдХрд░рддреЗ рд╣реИрдВ; рддреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдзрд┐ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рд╕рд╣реА рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛ред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд┐рдиреНрд╣реЗрдВ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рдЖрджрдд рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред рдФрд░, рдЯреАрдмреАрдПрдЪ, рд╕рдВрдкреВрд░реНрдг using / import рд╕рд░реНрдХрд╕ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рд╣реИред

@tpapp

рдареАрдХ рд╣реИ рддреЛ рдпрд╣ рдмрд╛рдд рд╣реИ: рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реИ рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реНрдг рдирд╛рдо рд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреЛ рдХреЛрдИ рдЗрд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдорд╛рди рд▓реЗрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рднреА рд╣реИред рдЕрдЧрд░ рдореИрдВ using module:x рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЬрдмрдХрд┐ рдореИрдВ x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдореИрдВ import module:x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рдзрд╛рд░рдгрд╛ рд╣реИ, рдХрд┐ using рдФрд░ import рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЖрдпрд╛рддрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЕрдЧрд░ using module рдХреЗрд╡рд▓ module.x рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рд▓реЗрдХрд┐рди module.x рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдЬрдмрдХрд┐ import module module.x рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдмрд╛рддреЗрдВ рдЧрд▓рдд рд╣реИрдВред

  1. using module рдЖрдкрдХреЛ module.x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдПрдХ рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд using module рдХрд╛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИ , рдХрд┐ рдпрд╣ import module рдХреА рддрд░рд╣ рднреА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рдд рдпрд╣ module.x рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ import рдЪреАрдЬ рд╣реИ, рди рдХрд┐ using рдЪреАрдЬ
  2. import рдХреЗ рд╡рд┐рдкрд░реАрдд, using рди рдХреЗрд╡рд▓ module рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред

рддреЛ рдпрд╣реА рдореИрдВрдиреЗ рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрджрд┐ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдпрд╛рдд/рдЙрдкрдпреЛрдЧ) рддреЛ рдЙрдиреНрд╣реЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ using рдХрднреА-рдХрднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЕрдиреБрдорд╛рдирд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЖрдпрд╛рдд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @martinholters рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╕ рджреЛ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ import рдХрд╛ рдЕрд░реНрде рд╣реИ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛, рдЬрдмрдХрд┐ using module: foo рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рддрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдк рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ module рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред

рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рдЗрд╕рдХреЗ рдкреВрд░реЗ рдирд╛рдо рд╕реЗ рдЕрднреА рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рд╕реАрдзреА рдмрд╛рдд рд╣реИред

рдпрд╛ рддреЛ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рддреЛ рдореБрдЭреЗ x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ using module:x рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП using рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп module.x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред
рдпрд╛ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк: рдХреЛрдИ import рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп рдЙрдирдХреЗ рдкреВрд░реНрдг рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реИ рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реНрдг рдирд╛рдо рд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджреЗрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╣реИред рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП (1) рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ (2) рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛, рднрд▓реЗ рд╣реА рджреЛрдиреЛрдВ рдХреБрдЫ рд╣рдж рддрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдВред рдореИрдВ рдЬрд▓реНрдж рд╣реА (1) рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред

@tpapp рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рди рдЖрдПред рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ:

  1. "рдЖрдк рдХреБрдЫ рднреА рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реИ" (рдХреНрдпреЛрдВрдХрд┐ using module:x рдЖрдкрдХреЛ x рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ)
  2. "рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрдж using рдФрд░ import рдореМрдЬреВрдж рд╣реИрдВ" (рдЧрд▓рдд рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрдг рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рдерд╛)
  3. "рдЖрдк рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдЙрд╕рдХреЗ рдкреВрд░реЗ рдирд╛рдо рд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ" (рдЬрд┐рд╕реЗ рдкреВрд░реНрдг рд╕рддреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП import module:x рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - @martinholters рдкреНрд░рд╕реНрддрд╛рд╡)

рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ "рд╕рд╛рдорд╛рди рдЖрдпрд╛рдд рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ for рд▓реВрдк рдХреА рддрд░рд╣ рд╣реИ рдпрджрд┐ рдЖрдк рдмреВрд▓рд┐рдпрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрднреА-рдХрднреА while рд▓реВрдк рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдХреЛрдИ рднреА рд░рд╛рд╢рд┐ рдЙрд╕ рдЧреИрд░-рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд╣реАрдВ рд╣реЛрдЧреА

рдЖрдк рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрд┐рд╕рдХрд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдПрдкреАрдЖрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ:

рдХреГрдкрдпрд╛ рдореЗрд░реЗ (рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ) рдкреАрдЖрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рджрдпрд╛рд▓реБ рдмрдиреЗрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╛рда рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдЬреЛ рд╡рд╣рд╛рдВ рд╣реЛрдЧрд╛ред рдХрд╛рд▓реНрдкрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рджрд╛рд╡рд╛ рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рд╢реЛрд░ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

@tpapp рд╢рд╛рдпрдж рдореБрдЭреЗ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛,

рдЖрдк рдХрд┐рд╕реА рдЧреИрд░-рднреНрд░рдорд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ рдХреЛрдб рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЗрд╕рдореЗрдВ рдЧрд▓рдд рдХреНрдпрд╛ рд╣реИ? рдЗрд╕реЗ рдкрдЪрдиреЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдЕрдкрд╡рд╛рдж рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рддреБрдо рд╕рдЪ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред рдФрд░ рдирд┐рдГрд╕рдВрджреЗрд╣, рдорд╢реАрдирд░реА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╕рд░рд▓реАрдХрд░рдг рдЯреВрдЯ рд░рд╣рд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП 2.0 рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛? рддрдм рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВред рдореБрдЭреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ: 2.0 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд░рд▓реАрдХрд░рдг (рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ) рдЬрд┐рд╕рдореЗрдВ (рдЙрдореНрдореАрдж рд╣реИ) рдЖрд╡рд╢реНрдпрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдкрдбреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдФрд░ рдореМрдЬреВрджрд╛ рдХрд╛рдордХрд╛рдЬ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдмреБрд░реА рддрд░рд╣ рдЖрд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИ .

#38271 рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд╢реНрди рд╣реИрдВ

рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВ

  1. рд╣рдореЗрд╢рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдирд╛рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ( Foo.bar() = ... ),
  2. рдкреНрд░рддреАрдХ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рднреА рдЕрдиреБрдорддрд┐ рджреЗрдВ ( using Foo: bar; bar() = ... )
  3. (2), рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рдПрдВ ( рдпрдерд╛рд╕реНрдерд┐рддрд┐ , import Foo: bar; bar() = ... )

рдХреМрди рд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рд░реНрдпрд╛рдд рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ

  1. using Foo Foo рдореЗрдВ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ, import Foo рдмрд╕ рдореЙрдбреНрдпреВрд▓ ( рдпрдерд╛рд╕реНрдерд┐рддрд┐ )
  2. using Foo: ... рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╛рди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕, рдлрд┐рд░ using Foo рдмрд╕ рдореЙрдбреНрдпреВрд▓ред

(1|2) рдФрд░ 2 рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рдХреЛ рдЦреЛрдиреЗ рдХреА рдХреАрдордд рдкрд░ using рдпрд╛ import рдореЗрдВ рдПрдХ рдХреАрд╡рд░реНрдб рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛

using LinearAlgebra, Random, StaticArrays

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рднреАред

рдпрд╣ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдореВрд▓ рдбрд┐рдЬрд╛рдЗрди рдЕрднреА рдЫреВрдЯ рдЧрдИ рдереА; рдЯреНрд░реЗрдбрдСрдл рд╣реИрдВред рдореИрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореМрдЬреВрджрд╛ (1.0) рд╕реЗрдЯрдЕрдк рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

2.0 рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдФрд░ рд╡рд░реНрдгрдирд╛рддреНрдордХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рд╕рдлрд╛рдИ рд╣реА рдЕрдЪреНрдЫреА рд╣реЛрдЧреАред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

| рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ | рдХреЗ рдмрд╛рдж |
|-|-|
| using Foo | useall from Foo |
| import Foo | use Foo |
| using Foo: a | use a from Foo |
| import Foo: a рдФрд░ import Foo.a | extend a from Foo |

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

helgee picture helgee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

m-j-w picture m-j-w  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

felixrehren picture felixrehren  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

omus picture omus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tkoolen picture tkoolen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ