рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗ:
рд╕реНрдЯреАрдлрди:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрд╕
рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдлреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдмрд╛рд░рдкрд╣рд▓рд╛ рдлреВ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ "рд╕реЙрдлреНрдЯ" рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдЧрд╛ (рдЕрдм рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рджреВрд╕рд░рд╛ рднреА рдлреВ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд▓реЛрдб рдФрд░ рдмрдирд╛ рджреЗрдЧрд╛, рдФрд░ рдмрд╛рд░ рдХреЛ "рд╣рд╛рд░реНрдб" рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдЧрд╛ (рдЕрдм рдХреНрдпрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ)ред"
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдХрд╛рдлреА рдЙрд▓рдЭрди рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ 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
рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдкреИрдХреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЖрдпрд╛рддрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рд╣реИ?
рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред
рдПрдХ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рддреИрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ:
import A: ...
. рдЬреЛрдбрд╝реЗрдВusing A:
рдкрджрд╛рд╡рдирдд рдХрд░реЗрдВ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
рдЕрдзрд┐рдХ рдореМрд▓рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░ рдЗрд╕рдореЗрдВ рд╣реИ:
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 рдХреАрд╡рд░реНрдб рдЕрддреНрдпрдзрд┐рдХ рд╣реИред
рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдХреАрд╡рд░реНрдб рд░рдЦрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдореВрд▓реНрдп рдЙрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (рд╣рд╛рд░реНрдб рдмрд╛рдЗрдВрдбрд┐рдВрдЧ)ред рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:
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
рдРрд╕рд╛ рднреА рдХрд░рддрд╛ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╣ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред
(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
)ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдЯреВрдЯ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдмреАрдЪ рдореИрдиреБрдЕрд▓ рдЕрдзреНрдпрд╛рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рд╢рд╛рдпрдж рд▓рд╛рдн рд╣реЛрдЧрд╛, рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреВрд░реА рдмрд╛рдд рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд▓рдЧрддреА рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдВрдЧрд╛:
using M
рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ M
рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирд┐рд░реНрдпрд╛рдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИредM
рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рдЖрдк M.y
рдЬреИрд╕реЗ рдпреЛрдЧреНрдп рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдП) рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рдкреНрд░рддреАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪреЗрдВ рдФрд░ (рдмреА) рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЬреЛрдбрд╝реЗрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣реЛрдВ рдпрд╛ рдирд╣реАрдВM.f
, рдпрд╛ ...import M: f
, рддреЛ рдЖрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреЗрд╡рд▓ f
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред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
рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдмрд╛рддреЗрдВ рдЧрд▓рдд рд╣реИрдВред
using module
рдЖрдкрдХреЛ module.x
рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдПрдХ рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд using module
рдХрд╛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИ , рдХрд┐ рдпрд╣ import module
рдХреА рддрд░рд╣ рднреА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рдд рдпрд╣ module.x
рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ import
рдЪреАрдЬ рд╣реИ, рди рдХрд┐ using
рдЪреАрдЬimport
рдХреЗ рд╡рд┐рдкрд░реАрдд, using
рди рдХреЗрд╡рд▓ module
рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИредрддреЛ рдпрд╣реА рдореИрдВрдиреЗ рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрджрд┐ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдпрд╛рдд/рдЙрдкрдпреЛрдЧ) рддреЛ рдЙрдиреНрд╣реЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ using
рдХрднреА-рдХрднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЕрдиреБрдорд╛рдирд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЖрдпрд╛рдд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @martinholters рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╕ рджреЛ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ import
рдХрд╛ рдЕрд░реНрде рд╣реИ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛, рдЬрдмрдХрд┐ using module: foo
рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рддрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдк рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ module
рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред
рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рдЗрд╕рдХреЗ рдкреВрд░реЗ рдирд╛рдо рд╕реЗ рдЕрднреА рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рд╕реАрдзреА рдмрд╛рдд рд╣реИред
рдпрд╛ рддреЛ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рддреЛ рдореБрдЭреЗ x
рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ using module:x
рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП using
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп module.x
рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред
рдпрд╛ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк: рдХреЛрдИ import
рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп рдЙрдирдХреЗ рдкреВрд░реНрдг рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реИ рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реНрдг рдирд╛рдо рд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджреЗрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╣реИред рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП (1) рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ (2) рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛, рднрд▓реЗ рд╣реА рджреЛрдиреЛрдВ рдХреБрдЫ рд╣рдж рддрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдВред рдореИрдВ рдЬрд▓реНрдж рд╣реА (1) рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред
@tpapp рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рди рдЖрдПред рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ:
using module:x
рдЖрдкрдХреЛ x
рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ)using
рдФрд░ import
рдореМрдЬреВрдж рд╣реИрдВ" (рдЧрд▓рдд рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрдг рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рдерд╛)import module:x
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - @martinholters рдкреНрд░рд╕реНрддрд╛рд╡)рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ "рд╕рд╛рдорд╛рди рдЖрдпрд╛рдд рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ for
рд▓реВрдк рдХреА рддрд░рд╣ рд╣реИ рдпрджрд┐ рдЖрдк рдмреВрд▓рд┐рдпрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрднреА-рдХрднреА while
рд▓реВрдк рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдХреЛрдИ рднреА рд░рд╛рд╢рд┐ рдЙрд╕ рдЧреИрд░-рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд╣реАрдВ рд╣реЛрдЧреА
рдЖрдк рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрд┐рд╕рдХрд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдПрдкреАрдЖрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ:
рдХреГрдкрдпрд╛ рдореЗрд░реЗ (рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ) рдкреАрдЖрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рджрдпрд╛рд▓реБ рдмрдиреЗрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╛рда рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдЬреЛ рд╡рд╣рд╛рдВ рд╣реЛрдЧрд╛ред рдХрд╛рд▓реНрдкрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рджрд╛рд╡рд╛ рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рд╢реЛрд░ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред
@tpapp рд╢рд╛рдпрдж рдореБрдЭреЗ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛,
рдЖрдк рдХрд┐рд╕реА рдЧреИрд░-рднреНрд░рдорд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ рдХреЛрдб рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЗрд╕рдореЗрдВ рдЧрд▓рдд рдХреНрдпрд╛ рд╣реИ? рдЗрд╕реЗ рдкрдЪрдиреЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдЕрдкрд╡рд╛рдж рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рддреБрдо рд╕рдЪ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред рдФрд░ рдирд┐рдГрд╕рдВрджреЗрд╣, рдорд╢реАрдирд░реА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╕рд░рд▓реАрдХрд░рдг рдЯреВрдЯ рд░рд╣рд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП 2.0 рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛? рддрдм рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВред рдореБрдЭреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ: 2.0 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд░рд▓реАрдХрд░рдг (рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ) рдЬрд┐рд╕рдореЗрдВ (рдЙрдореНрдореАрдж рд╣реИ) рдЖрд╡рд╢реНрдпрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдкрдбреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдФрд░ рдореМрдЬреВрджрд╛ рдХрд╛рдордХрд╛рдЬ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдмреБрд░реА рддрд░рд╣ рдЖрд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИ .
#38271 рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд╢реНрди рд╣реИрдВ
Foo.bar() = ...
),using Foo: bar; bar() = ...
)import Foo: bar; bar() = ...
)using Foo
Foo
рдореЗрдВ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ, import Foo
рдмрд╕ рдореЙрдбреНрдпреВрд▓ ( рдпрдерд╛рд╕реНрдерд┐рддрд┐ )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
|
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ
import
рдФрд░export
рдХреА рд╕рдорд░реВрдкрддрд╛ рдкрд╕рдВрдж рд╣реИред (рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдХрд╣реАрдВ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ рд╣реИред)