ë©ìŒë§ 늬ì€ížìì:
ì€í í:
ëë ì°ëŠ¬ê° ìì ì ìì í ìì ìŒ íë€ê³ ìê°í©ëë€.
ížë¥Œ ì¬ì©íì¬
Foo ì¬ì©: ë°ì²« ë²ì§žë Fooì ëí ë°ìžë©ì ë¡ëíê³ ìì±íì¬ ëŽë³ŽëŽêž°ë¥Œ "ìííž" ë°ìžë©ìŒë¡ ì¬ì©í ì ìëë¡ í©ëë€(ì§êž ì¬ì©íë ìì ). ë ë²ì§žë ëí Fooì ëí ë°ìžë©ì ë¡ë ë° ìì±íê³ ë§ë륌 "íë" ë°ìžë©ìŒë¡ ì¬ì©í ì ìëë¡ í©ëë€(ì§êž ê°ì žì€êž°ê° ìííë ìì )."
ìŽê²ì ìì§ ì ê· ìŽë¯Œìë€ìê² ìë¹í íŒëì€ë¬ìŽ ì§ì ìž ê² ê°ìµëë€.
import Foo
êž°ë¥ë íìí©ëë€. Foo
ììŒë©Ž ë©ëë€.
using Foo:
?
using Foo: Foo
?
Foo
륌 Foo 몚ëì ë°ìžë©íë €ë©Ž ë€ìì ìíí©ëë€.
import Foo
Foo
륌 Foo 몚ëì, x
륌 Foo.xì, y
륌 Foo.yì ë°ìžë©íë €ë©Ž
import Foo: x, y
Foo
륌 몚ë Fooì ë°ìžë©íê³ ëªšë Fooì ëŽë³Žëž ìŽëŠì ì ê·ííì§ ìê³ ë°ìžë©íë €ë©Ž ë€ìì ìíí©ëë€.
import Foo: *
ìŽê²ì ëì using
ìŒ ì ìì§ë§ import
ì ì ì ì ë ê°ê¹ë€ê³ ìê°í©ëë€.
ìŽê²ì ëí 묎ìžê°ë¥Œ ë²ìë¡ ê°ì žì€ë ê²ê³Œ ë©ìë íì¥ì ì¬ì©í ì ìëë¡ íë ê² ì¬ìŽì 구ë¶ì ì ê±°í©ëë€. ëë ê°ìžì ìŒë¡ ê·žê²ìŽ ì¢ì ìŒìŽê³ 몚ë ìì€í ì ë ìŽíŽíêž° ìœê² ë§ë ë€ê³ ìê°íì§ë§ ì°ëŠ¬ê° ê·žê²ì ê°ì žìëì§ íìžíê³ ì¶ììµëë€.
몚ëì ëŽë³Žëž 몚ë ë°ìžë©ì ì¬ì©í ì ìëë¡ íë 구ì±ì íë( importall
) ë°ìžë©ìŽ ìëëŒ ìííž( using
) ë°ìžë©ì ë§ë€ìŽìŒ íë€ë ê°ë ¥í 겜ì°ê° ììµëë€. 몚ë Aê° ëªšë B륌 ì¬ì©íê³ foo(::Any)
륌 ì ìíë€ê³ ê°ì í©ëë€. 몚ë Bì ìŽí 늎늬ì€ììë foo(::Any)
륌 ì ìíê³ ëŽë³ŽëŽë ê²œì° ìë¡ ë°©íŽíë ê²ì ìíì§ ììµëë€. ëí 몚ë Bê° foo(::Int)
륌 ì ìíê³ ëªšë Aê° ë 구첎ì ìŽêž° ë묞ì ì ìí ë©ìë ëì íŽë¹ ë©ìë륌 ížì¶íê±°ë 몚ë Bìì ìíë 몚ë ìë³ì륌 ëìŽíë ê²ì ìíì§ ììµëë€. 충ëíë ëšìŒ ìë³ì륌 ê°ì žì€ë ê²ì ë°©ì§í©ëë€.
ê·žë¬ë ê°ì žì€ë €ë ìë³ì륌 ëª ìì ìŒë¡ ëìŽíë€ë©Ž ìííž ë°ìžë©ì ì ê³µí ìŽì ê° ììµëë€. íë ë°ìžë©ê³Œ ìííž ë°ìžë©ìŽ ëìŒí ëìì íë ê²œì° ìë³ìì ì ë©ìë륌 ì ìíì§ ìê±°ë ì ë©ìë륌 ì ìíë €ê³ í©ëë€. ìŽ ê²œì° ìííž ë°ìžë©ì ë°ìžë© ìì곌 ëìŒíë©° ìíë ê²œì° ëª©ë¡ìì ìë³ì륌 ì ê±°íêž°ë§ íë©Ž ë©ëë€.
ê°ëší ë§íŽì @StefanKarpinski ì ì ììŽ ë§ìì ëëë€. ê°ë ì ìŒë¡ íë ë°ìžë©ê³Œ ìííž ë°ìžë©ìŽ 몚ë íìíì§ë§ ëšìŒ í€ìëë¡ ëªšë ì ì©í ëìì ì»ì ì ììµëë€.
ëì ìë륌 ì ê² ìŽ. ìŽ ê²œì° using Foo:
(ìœë¡ ì ìì§ë§ í목 ìì)ìŽ ê°ë
ì ìŒë¡ ìŒêŽëë ââê²ì²ëŒ 볎ìžë€ë ê·íì ì ììŽ ë§ìì ëëë€. ìœë¡ ì ê°ì žì¬ êž°ížë¥Œ ì ííì§ë§ ì묎 ê²ë ëìŽíì§ ììì ëíë
ëë€.
:
ë€ì ì€ë ë¹ì¹žìŽ ì¢ ìꞰꞎ íë° ìµìíŽì§ì€ ê±°ëŒ ìê°í©ëë€.
ë¹ íí ìœë¡ ì 묞ì ë íì¬ ë€ì ì€ìì ìŽëŠì ì°Ÿê³ ìë€ë ê²ì
ëë€. ìŠ, using Foo:
ë ë¶ìì í ê²ìŒë¡ ê°ì£Œë©ëë€.
êŽë š: #4600
íì¬ Julia êŽíì 몚ë ê²ì
íì¬ ëªšëì ë€ìì€íìŽì€ìŽì§ë§ ì¬ì í
몚ë ìŽëŠë§ ê°ì žì¬ ì ìë ê°ëšíê³ ìì°ì€ë¬ìŽ ë°©ë²ì
ëë€.
ëë ëí Foo륌 ì¬ì©íê³ Foo.Bar륌 ì¬ì©íë íì¬ ì€ë²ë¡ë©ìŽ
묞ì ê° ìë; Foo ëŽë¶ë 볎ìŽì§ë§ Foo.Bar ëŽë¶ë ìëëë€(Foo.Barê°
몚ë?)
ëë Stefanì ì ììì ìŽê²ìŽ ë€ì곌 ê°ìŽ ë€ë£šìŽì§ë€ê³ ìê°í©ëë€.
Foo ì¬ì©: Foo
2014ë 8ì 14ìŒ ëª©ììŒì toivoh [email protected] ì ë€ì곌 ê°ìŽ ìŒìµëë€.
íì¬ Julia êŽíì 몚ë ê²ì
íì¬ ëªšëì ë€ìì€íìŽì€ìŽì§ë§ ì¬ì í
몚ë ìŽëŠë§ ê°ì žì¬ ì ìë ê°ëšíê³ ìì°ì€ë¬ìŽ ë°©ë²ì ëë€.ëë ëí Foo륌 ì¬ì©íê³ Foo.Bar륌 ì¬ì©íë íì¬ ì€ë²ë¡ë©ìŽ
묞ì ê° ìë; Foo ëŽë¶ë 볎ìŽì§ë§ Foo.Bar ëŽë¶ë ìëëë€(Foo.Barê°
몚ë?)â
ìŽ ìŽë©ìŒì ì§ì ëµì¥íê±°ë GitHubìì íìžíìžì.
https://github.com/JuliaLang/julia/issues/8000#issuecomment -52202142.
@kmsquire íì§ë§ Foo 몚ë ëŽë¶ì Foo 몚ëìŽ ììŒë©Ž ìŽë»ê² ë©ëê¹? ë¶ííë 몚íží©ëë€.
ê·žê²ì ì€ê³ ì€ë¥(ê·žëŠ¬ê³ ê²œê³ ë°ì)ìŽë¯ë¡ 묞ì ê° ëì§ ììµëë€.
ì ë @ssfrr ìŽ ì ìí ë²ì ìŽ ê°ì¥ ì¢ìµëë€.
íší€ì§ì íëì 몚ë ì§ì
ì ë§ ìë€ë Ʞ볞 ê·ì¹ìŽ ììµëê¹? -- To import Foo
ë Foo
íší€ì§ì $ Foo
몚ë ê°ì žì€êž°ë¥Œ ì믞í©ëë€. ë€ë¥ž 몚ë 몚ëì Foo
ì íì 몚ëìŽìŽìŒ í©ëë€. ìŽë íší€ì§ Foo, íší€ì§ì Foo.jl
ë° íší€ì§ ëŽì module Foo
ì¬ìŽì ììì ëììŽ ììì ì믞í©ëë€.
import
ë¡ì»¬/ìë ê°ì žì€êž°ìë ì¬ì©í ì ìëì§ ê¶êží©ëë€. íë¡ì ížì src/foo.jl
ë° src/bar.jl
ìŽ ìê³ foo.jl
ì ìë€ê³ ê°ì í©ëë€.
import bar
src/bar.jl
ìì ê°ì žìµëë€. ìŽê²ì 몚ë ìì€í
ëŽìì ìëíêž° ë묞ì include
륌 ì¬ì©íë ê²ë³Žë€ ê°ì ë ê²ì
ëë€.
ì, íší€ì§, íší€ì§ ì§ì
ì ë° ëªšëì ìŒëìŒìŽìŽìŒ í©ëë€. íìí ê²œì° ìŽ ê·ì¹ì ìŽêžž ì ìì§ë§ 몚ëì ìŽëŠ ì§ì ì ìí ê²ìŒ ë¿ êž°ë¥ ëšìê° ìëêž° ë묞ì ê·žë ê² í íìê° ë§ì§ ììµëë€. ìë ê°ì žì€êž° êµ¬ë¬žìŽ import .bar
ìž ë°ë©Ž import bar
ë ì ë ê°ì žì€êž°ëŒë ì ì ì ìžíê³ ë #4600ìŽëŒë ììŽëìŽê° ììµëë€.
@StefanKarpinski import .bar
ë ì€ì ë¡ ë¡ì»¬ ëë í 늬ìì "bar.jl"ì ì°Ÿìµëê¹? import .Bar
ìŽ ìŽë¯ž íì¬ ìì 몚ëì íì 몚ëë§ ì°žì¡°íë€ë ìžìì ë°ììµëë€.
ì ë°ìŽíž: ì, ê·žê² ë¹ì ìŽ #4600ìì ì ìí ê²ì ëë€. ì£ì¡í©ëë€.
:+1:. ì°ëŠ¬ê° ìŽê²ì íë €ê³ íë€ë©Ž, 0.4ê° ê·žê²ì íêž°ì ì¢ì ìêž°ê° ë ê²ì ëë€.
:+1: ê³ìíŽì ìŽ ì€ ìŒë¶ë¥Œ ì 늬íììì€(0.4ì©ìŒë¡!)
íì¥ ì¬ë¶ë¥Œ 구ë¶íêž° ìíŽ ë ê°ì§ ê°ì žì€êž° ë©ì»€ëìŠì ì¬ì©íë ëì êž°ë¥ ì ììì í€ìë ëë 죌ìì íµíŽ íì¥ ì¬ìŽíž ì첎ìì íì¥ ì ížë¥Œ 볎ëŽì§ ìë ìŽì ë 묎ìì
ëê¹? Javaì @Override
죌ì곌 ì ì¬í©ëë€.
ìŽê²ì íšìê° ë€ë¥ž íšìë³Žë€ ì°ì íë€ë ê²ì ë¶ëª í ì ì ìë€ë ìŽì ìŽ ììµëë€(ë°ëŒì ë©ìëì).
ê·žê²ì ìŽë¯ž ê°ë¥í©ëë€, @ssagaert. íšì ì ì(ì: Base.print(âŠ) = âŠ
)ì 몚ë ìŽëŠì ëª
ìì ìŒë¡ ìì±íì¬ ìííë©° ë§ì ì¬ëë€ìŽ ìë Žíë ì€íìŒìž ê² ê°ìµëë€. ì ìŒí 묞ì ë êµ¬ë¬žìŽ ê°ë¥í 몚ë ìŽëŠ(ì: .+
ë±)ì ëíŽ ìëíì§ ìëë€ë ê²ì
ëë€.
(ëš, ë€ë¥ž GitHub ì¬ì©ì륌 ꎎë¡íë ê²ì ë°©ì§íêž° ìíŽ ë§€í¬ë¡ë¥Œ ë°±í± ``ìŒë¡ 묶ìŒììì€.)
:+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(...) = ...
@Ismael-VC Base.show(...) = ...
ë ìŽë¯ž ì묎 ê²ë ê°ì žì€ì§ ìê³ ìëí©ëë€. import
ë show(...) = ...
ê° Base.show
$ 륌 íì¥íë €ë 겜ì°ìë§ íìí©ëë€.
@Ismael-VC ì¬ì ì ëšìŽë ëšì§ ì ììŒ ë¿ì
ëë€. íì¥ëê±°ë ì믞 ìë ë€ë¥ž ê²ìŽ ë ì ììµëë€. ëí juliaììë 맀í¬ë¡ë¥Œ ì믞íë¯ë¡ @
ê° ììŽìŒ í©ëë€( @Override
ë 죌ììž Java륌 ëíë).
@simonster ê³ ë§ìì 귞걎 몰ëìŽì!
@ssagaert ê·žëì í€ìë륌 ì믞í©ëê¹? ëë ìŽê²ê³Œ ê°ì ê²ì ìëíì§ë§ ì¬ì í macro-fooì ì§ìŠìŽë©ëë€.
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
맀í¬ë¡ë ê°ì žì€êž° ë©ì»€ëìŠì ì믞륌 ë³ê²œíì§ ìì ê²ìŽëŒê³ ìê°í©ëë€.
@Ismael-VC ì ë ê·žë¬ì§ë§ @mbauman ì 'ížëŠ'ë ì¢ìí©ëë€.
.
ì첎륌 ì¬ì©íì¬ "ìŽê²"ì ì믞í ì ììŒë©Ž ì¢ì ê² ê°ìµëë€. ë€ì곌 ê°ì ííìì ìì±í ì ììµëë€.
import Base: .
(ìì
Base.Base
ì믞)
ëë
using ..
ê·žë¬ë https://github.com/JuliaLang/julia/pull/11891#issuecomment -116098481ìŽ íìí ê²ìŽëŒê³ íì í©ëë€. 몚íží 겜ì°ë¥Œ íŽê²°íêž° ìíŽ .
ìì 공백ì íì©íë ê²ìŒë¡ 충ë¶íì§ë§ ê·ž ë€ìë 공백ì íì©íì§ ììµëê¹?
ëë requireê° ìŽë¯ž ë ìŽì ì¬ì©ëì§ ìëë€ê³ ìê°í©ëë€. 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
ëìì using
import
륌 ì ì§íë ê²ì
ëë€.
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
ê·žëŠ¬ê³ ê²°ì ì ìŒë¡, ìŽ ì ììŽ íì íë ë°ìžë©ì ìííì§ë ììµëë€. --- ëª
ìì ìŒë¡ ëìŽí í목ì ëíŽìë§. $ using
import
륌 ë§íëë¡ ì구íë ê²ì ë§ì ìì ì ì¶ê°íì§ ììµëë€.
ìì ì ìííž ë°ìžë©ìŒë¡ ì íŽê²°ë ì ìë ë©ìë íì¥ì ìííì§ ìë ëë¶ë¶ì ì¥ììì ë¹ë¡¯ë©ëë€. íší€ì§ì 몚ë ëŽë³ŽëŽêž°ë¥Œ ê°ì žì€ì§ ìê³ (ëë ëŽë³ŽëŽì§ ìì í¹ì ìííž ë°ìžë©ì ê°ì žì€ì§ ìê³ ë) í¹ì ìííž ë°ìžë©ì ìì²í ì ìë ë°©ë²ìŽ ì¬ì í ììŽìŒ íë€ê³ ìê°í©ëë€.
ê°ì žìš ë°ìžë© ë®ìŽì°êž°ì ëí ê²œê³ ê° ì¬ì í íìë©ëê¹?
몚ë ì격ì ì구íë ê²ì ì¢ì ìê°ìŽëŒê³ ìê°í©ëë€. ì§êžì íšìê° ëì
ëê³ ìëì§ ëë íì¥ë ë©ìëìžì§ ìêž° ìíŽ import A: func
묞ì ëí ì 첎 íší€ì§ ëŽì©ì ìŽíŽëŽìŒ í©ëë€.
ê°ì žìš ë°ìžë© ë®ìŽì°êž°ì ëí ê²œê³ ê° ì¬ì í íìë©ëê¹?
ëë ê·žê²ìŽ ì€ì ë¡ ì€ë¥ëŒê³ ìê°í©ëë€.
ë í€ìë륌 몚ë ì ì§íì§ë§ ì¬ì í ìì ì ìœê° ëšìííë ë ë€ë¥ž ì ììŽ ë ëê³ ììµëë€.
import A: ...
구묞 ì¶ê°using A:
ì§ì ì€ëšusing A.B
ìì A.B
ê° ëªšëìŽìŽìŒ íê³ import A.B; import A.B: ...
ì ìœìŽìì 묞ìííììì€.ìŽë° ììŒë¡ import
ë§ìŒë¡ 몚ë ìì
ì ìíí ì ìì§ë§ using X
ë ížìì ì¬ì©í ì ììµëë€. ìŽê²ì ëí ì ííêž° í¹í ìœìµëë€.
BTW, using
ëŽê° ì¬êž° ì ê²ìí ê²ì²ëŒ ìŒêŽì±ìŽ ììŽ ë³Žì
ëë€. using
륌 ì ì§íë ê²œì° ê°ë¥í ê²œì° use
ë¡ ìŽëŠì ë°ê¿ìŒ í©ëë€.
import-the-extend íšíŽë³Žë€ ìë¯žê° íšì¬ ëª
ííêž° ë묞ì íšì륌 íì¥í ë 몚ë ìëíê° íìíë€ê³ ìê°í©ëë€.
ëŽê° ì ížíë ì ê·Œ ë°©ì:
using A: A
륌 ì¬ì©íììì€.import
ë° ìì±ë ë°ìžë© ì¢
ë¥ë¥Œ ì ê±°í©ëë€.https://github.com/JuliaLang/julia/issues/8000#issuecomment -327512355륌 구ííêž° ìíŽ íìí ìŒ:
using A
ì ëìì íë ê°ì žì€êž° A
ë³ê²œusing A: x
ì ëí ì§ì ì ê±°x
ê° íì 몚ëìŽ ìë using A.x
ì ëí ì§ì ì ê±°x
ê° íì 몚ëìŽ ìë import A.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
ë 몚ëì) import A.X: ...
using A: X
( X
ë 몚ëìŽ ìë)ì import A: X
ê° ë©ëë€.import A: X
ë ë³ê²œëì§ ìì§ë§ X
륌 ìëìŒë¡ íì¥í ì ììµëë€(첫 ë²ì§ž í목 ì°žì¡°).using
í€ìë ìì ì¬ì© ì¬ë¡ê° ëëœëììµëê¹? ìë§ë ìŽê²ì ìŽë¯ž ì ìëìì ê²ì ëë€ ...
íì¥í ë 몚ëì ëíŽ ëª ìì ìŒë¡ ë§íë ê²ì ëíŽ ëŽê° ì¢ìíë ê²ì íì¥ìŽ íšì¬ ë ì§ìì ìŽëŒë ê²ì ëë€. ì§êžì ë©ìëê° íì¥ë ë ê°ì žì€êž°ë¥Œ 몚ëì 맚 ìì ë§€ì° ê°ê¹ê² ë°°ì¹íë ê²ìŽ ìŒë°ì ì ëë€(ìì í ë€ë¥ž íìŒì ìì ì ììµëë€!). íì¥ ë©ìëê° ìì ëë©Ž ìŒë°ì ìŒë¡ import 묞ì ììŽë²ëŠœëë€.
ëë ê·žê²ìŽ 볞ì§ì ìŒë¡ ìë¹í ìì ì§ìì ë°ì ìì ì ì 곌 ëìŒíë€ê³ ìê°í©ëë€. @JeffBezanson ì using A
륌 ìµìí ì¬ì©íêž° ìœê² ì ì§íê³ $#$ using A: x
$#$륌 ì ì§íꞰ륌 ìí©ëë€. ë¶ëª
í (ì ë ìŽì ëíŽ í맀íì§ ìì) ë°ìžë©ì ê°ì žì¬ ì ìë ì€ìí ì¬ì© ì¬ë¡ìŽêž° ë묞ì
ëë€. ì°ì¥í ì ìë ë°©ìì
ëë€. ë€ë¥ž ë°©í¥ìŒë¡ ê°ì import
륌 using
ë¡ ë첎íìë ëª ê°ì§ ì ììŽ ìì§ë§ ê·ž ì€ ìŽë ê²ë ì€ì ë¡ ë§ì êŽì¬ì ëì§ ëª»íìµëë€( import
ê° ë 귌볞ì ìž ê² ê°ìµëë€).
ì°šìŽì ì ë€ì곌 ê°ìµëë€.
x
ë° y
ì ëí íë ë°ìžë© from A
"íë ë°ìžë©"ì ìë¯žê° ëªšë ì ëì¬ ììŽ íì¥í ì ìë€ê³ ê°ì íë©Ž ëŽ ë²ì ìë íë ë°ìžë©ìŽ ììµëë€. íì¥íë €ë©Ž íì¥í ìì¹ì ì íí 몚ë ì ëì¬ë¥Œ ë¶ì
ëë€. íì¥ììžì§ ìëì§ì êŽê³ììŽ ì믞륌 ë³ê²œíë ë€ë¥ž íìŒì ìŒì€ì€í import
ë¬žìŽ ììµëë€.
귞늬ê³
using A: x
ìëíë©Ž (ëë ìŽê²ì ëíŽ í맀íì§ ììµëë€) íì¥í ì ìë ë°©ììŒë¡ ë°ìžë©ì ê°ì žì¬ ì ìë ê²ìŽ ì€ìí ì¬ì© ì¬ë¡ìŽêž° ë묞ì ëë€.
몚ë ì ëì¬ë¥Œ ê°ì ë¡ ì²ëŠ¬íì§ ììµëê¹? ëë ë€ì곌 ê°ì ë¹ ëªšëì ëíŽ ìŽìŒêž°íê³ ììµëê¹?
module M
x = 1
end
import M: x; x = 2
ë° using M: x; x = 2
몚ë ëìŒí ê²œê³ ë©ìì§ë¥Œ íìíë¯ë¡ 묞ì ê° ë¬Žììžì§ ì ì ììµëë€...
import A: ...
ìŽìì ìœê² íêž° ìíŽ using A
륌 ì ì§íë ê²ì ì ìê°ìë ì¢ ê³Œí ê² ê°ìµëë€.
몚ë ì ëì¬ë¥Œ ê°ì ë¡ ì²ëŠ¬íì§ ììµëê¹?
ë€; êž°ë¥ì íì¥íêž° ìíŽ êž°ë¥ì íì íŽìŒ íë ê²œì° ìŽ ì ì êŽë šìŽ ììµëë€.
곌ëíê² ê°ì žì€êž°ë¥Œ ìœê² íêž° ìíŽ A륌 ê³ì ì¬ì©íë ê²ì A: ... ì ìê°ìë ì¢ ê³Œí ê² ê°ìµëë€.
ëë ê·žê²ì ë°ë ë°©í¥ìŒë¡ 볞ë€. ì¬ëë€ìŽ using A
(ìŽê²ì ë©ì§ê³ ì§§ê³ ì°ëŠ¬ 몚ë ìµìíš)ìì import A: ...
ë¡ ì ííëë¡ íë ê²ì ëšì§ íëì í€ìëë§ ìë€ë ìžìì ìž ì구 ì¬íì 충족ìí€êž° ìíŽ ê³Œëíë€ë ê²ì
ëë€.
ì°ë ë륌 ìœìŽë³Žë 2ê°ì í€ìë륌 ê°ë ê²ì 죌ë ê°ì¹ë íì¥ ê°ë¥í ë°ìžë©(íë ë°ìžë©)ì 구ë¶íë ê² ê°ìµëë€. ìŽë¥Œ ìŒëì ëê³ ë ê°ì§ ì€í ê°ë¥í ì룚ì ìŽ ìë€ê³ ìê°í©ëë€.
using
ë° extending
륌 ì ìí©ëë€. import
ë êŽì°®ì§ë§ extending
ë ë ë²ì§ž í€ìëì ì¡Žì¬ ìŽì 륌 ëª
ííê² í©ëë€.ë ê²œì° ëªšë Foo
몚ëë§ ë°ìžë©íêž° ìíŽ ë€ì ì€ íë륌 ì¶ê°íì¬ using
ê° ì§êžê³Œ ê°ììŒ íë€ê³ ì ìí©ëë€.
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
ë¡ ë§ëë ê²ìŽ ì¬ëë€ìŽ ê°ì žì€ë ê²ì ëíŽ ë ì¡°ì¬íê² ë§ë€ ê²ìŽëŒê³ ìê°íì§ ììµëë€. ë€ë¥ž ì¬ëë€ìŽ ìŽë»ê² íëì§ ì§ì íë ê²ì ëì íììŒë¡ ê°ì£Œëë€ë ê²ì ìëë€. íì§ë§ Pythonì Ʞ볞ì ìŒë¡ import X
ë° import X: *
ì ê°ì ì믞 첎ê³ë¥Œ ê°ì§ê³ ìì§ë§ ê·žë€ì ìíê³ë ìŽë¬í ì€í ìì
ìŒë¡ ê°ë ì°š ììµëë€ ð€·ââïž (ê·žëŠ¬ê³ ê·žë€ì ê·žê²ì ì«ìŽíêž°ë¡ ì ëª
í©ëë€.) ëë ì
ë ¥íŽìŒ íë ìœê° ë ꞎ í
ì€ížê° ì¬ëë€ìŽ ê°ì¥ ížëŠ¬íë€ê³ ìê°íë ìŒì íì§ ëª»íê² íë€ê³ ìê°íì§ ììµëë€. ê·žë êž° ë묞ì ì¬ëë€ìŽ ë³í륌 ëª
ìì ìŒë¡ ì°ê² ë§ëë ë§ë²ì ìŽìì 겜ê³í©ëë€.
ëí import module: *
ë° using module: *
ë ì ìë ì믞ì ì¬ì©í ì ììµëë€. *
ë ì íší Julia ìë³ììŽê³ +
ëë 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
ì첎륌 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"
@FelixBenning : ë€, ì못 ìŽíŽíì ê² ê°ìµëë€. FWIW, ì ìê°ìë "... make Foo.x
íì¥ ê°ë¥"ìŽ êµ¬ë¶ì ì ê·Œíë íŒëì€ë¬ìŽ ë°©ë²ìŽëŒê³ ìê°í©ëë€. --- íì ì ê·íë íšì ìŽëŠì ë©ìë륌 ì ìí ì ììµëë€. using Foo: x
ìì ë°ìíë ìŒì Foo
ìì²Žê° ë€ìì€íìŽì€ë¡ ê°ì žì€ì§ ìëë€ë ê²ì
ëë€.
ë§ë¶ì¬ì, ìŽ ì£Œì 륌 ë€ì ìœìŒë©Ž #25306ìŽ ì°ëŠ¬ë¥Œ ìŒì¢
ì ì§ì ìµì ì ìŒë¡ ìŽëìëì§, ê·žëŠ¬ê³ ëšì ì ìŒí ê²°ì ì ë€ìì€íìŽì€(íì¬ using Foo: f
)ë¡ íì¥í ì ìë ê°ì žì€êž°ê° íìíì§ ì¬ë¶ì
ëë€. ê·žë¬ë ê·žê²ìŽ 깚ì§êž° ë묞ì 맀ëŽìŒ ì±í°ë ê·ž ì¬ìŽì ë€ì ìì±íë ê²ìŽ ëììŽ ë ê²ì
ëë€. ë§ì ì¬ì©ìë ì 첎륌 íŒëì€ëœê² ìê°í©ëë€.
ìŽê²ì 묞ììì íì ì ì§ì ì ê·Œíë ë°©ë²ì ëë€.
using M
ë 몚ëì ë¡ëíê³ M
ë° ëŽë³Žëž êž°ížë¥Œ ë€ìì€íìŽì€ë¡ ê°ì žìµëë€. ìì¶ìŽ ì€ìí ì ìŒí 겜ì°ì
ëë€.M
ê° ììŒë©Ž M.y
ì ê°ì ì ê·íë ìŽëŠì ì¬ì©íì¬ (a) ëŽë³ŽëŽì§ ìì êž°ížì ì¡ìžì€íê³ (b) ëŽë³ŽëŽêž° ì¬ë¶ì êŽê³ììŽ íšìì ë©ìë륌 ì¶ê°í ì ììµëë€.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
ì€íŽíì ê² ê°ìì. FWIW, ì ìê°ìë "... Foo.x륌 íì¥ ê°ë¥íê² ë§ëëë€"ë 구ë¶ì ì ê·Œíë íŒëì€ë¬ìŽ ë°©ë²ìŽëŒê³ ìê°í©ëë€. --- íì ì ê·íë íšì ìŽëŠì ë©ìë륌 ì ìí ì ììµëë€.
ì, using Foo: x
$ ë€ìì $ Foo.x
륌 íì¥í ì ììµëê¹? ê·žë ë€ë©Ž 묞ìê° ìì íì§ ìêž° ë묞ì
ëë€(ëŽ ì€í¬ëŠ°ì· ì°žì¡°). ë§ìœ ìëì€ëŒë©Ž, ëë ìŽ ë¬žì¥ë€ìŽ ìŽë»ê² ìëíëì§ ì벜íê² ìŽíŽíìŒë©° import Foo
ê° Foo.x
륌 íì¥ ê°ë¥íê² ë§ëë ìŒì ë¶ëª
í íìµëë€. ë°ëŒì ë§ ê·žëë¡ Foo.x
륌 íì¥ì ì¬ì©í ì ììµëë€. ìŽ ëšìŽì 몚ë ì믞ìì. ë¬Œë¡ x
륌 íì¥ì ì¬ì©í ì ìëë¡ íì§ë ìì§ë§ ìŽê²ìŽ import Foo: x
ì ì©ëì
ëë€.
ì,
using Foo: x
$ ë€ìì $Foo.x
륌 íì¥í ì ììµëê¹?
Foo
륌 ìŽë»ê²ë ë€ìì€íìŽì€ë¡ ê°ì žì€ì§ ìë í(ì: using Foo
).
ëë ìŽ ì§ì ìŽ ìŽë»ê² ìëíëì§ ì벜íê² ìŽíŽíìµëë€
ìŽì ëíŽìë íì€íì§ ììµëë€. ê·žë¬ë 몚ë ë° ë€ìì€íìŽì€ì ëí ì§ë¬žìŽ ìë ê²œì° Discourse í¬ëŒì ìŽì©íìêž° ë°ëëë€.
íì€í
import Foo
ëFoo.x
륌 íì¥ ê°ë¥íê² ë§ë€êž° ìíŽ ë¬Žìžê°ë¥Œ íìµëë€.
ë©ìë륌 ì¶ê°íêž° ì ì ì ê·íë ìŽëŠì ì¬ì©íì¬ ìŽë»ê²ë íšì륌 ì°žì¡°í ì ììŽìŒ íë€ë ì믞ììë§.
묞ìê° ìì íì§ ìì 겜ì°
ìŒì¢
ì êž°ë°í ë°©ììŽëŒê³ ìê°í©ëë€. í¹ì ììì using MyModule: x, p
ìííë©Ž ; íì¥ì ì¬ì©í ì ìë ë©ìë ê° ììŒë¯ë¡ í
ìŽëžìŽ ì íí©ëë€.
ììì ë§íë¯ìŽ ë ì ìž ì ìë€ë ë° ëìí©ëë€. ë€ìì€íìŽì€ì ìµìíì§ ìì ë§ì ì¬ëë€ìŽ ìŽë¥Œ íŒëì€ëœê² ìê°í©ëë€. ê·žëŠ¬ê³ TBH, 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
íì¥ ê°ë¥íê² ë§ëëë€. ê·žëŠ¬ê³ íì¥ ê°ë¥íê² ë§ëë ê²ì using
ê° ìëëŒ import
$#$ì
ëë€.import
ì ë¬ëŠ¬ using
ë module
ë¿ë§ ìëëŒ ê·ž ìì ìë 몚ë ê²ì ì¬ì©í ì ìê² í©ëë€.ìŽê²ìŽ ì ê° ì í
ìŽëžë¡ íííë €ê³ í ê²ì
ëë€. ë ê°ì ë€ë¥ž ëšìŽê° ì¬ì©ëë©Ž(ê°ì žì€êž°/ì¬ì©) ë ê°ì§ ë€ë¥ž ìì
ì ìííŽìŒ íë©° ìŽë ëª
ííŽìŒ í©ëë€. using
ê° íì¥ì íì©íë 겜ì°ê° ìê³ ê·žë ì§ ìì 겜ì°ìë ììž¡í ì ìë ëìì
ëë€.
ì¢ì ëìì @martinholters ê° ì ìí ëë¡ ê°ì žì€êž°ë¥Œ ìì í ì ê±°íë ê²ì
ëë€. í¹ì ìŒì 묎ììë¡ ì¬ì©ëë ë ëšìŽë¥Œ ê°ì§ ìë ììµëë€. import
ê° í¹ì íšì륌 ê°ì žì¬ ë íì¥ ê°ë¥íê² ë§ëë ê²ì ì믞íì§ë§ using module: foo
ììë ìŽë¥Œ íì©íì§ ìë ê²œì° ë€ìì€íìŽì€ì module
ë§ í¬íší ë ëìŒí ëììŽ ë°ìíŽìŒ í©ëë€.
몚ëìŽ ë€ìì€íìŽì€ì ìë ê²œì° ì§êž ë°ë¡ ì 첎 ìŽëŠìŒë¡ 몚ë ê²ì íì¥í ì ìë€ê³ íŽì ìŽê²ìŽ ëª ë°±íê±°ë ì§ì ì ìž ì믞ë ìëëë€.
ë€ìì€íìŽì€ì ìë ê²ë§ìŒë¡ë 충ë¶íë©° using module:x
ë¡ ë€ìì€íìŽì€ì í¬íšíê±°ë ë€ìì€íìŽì€ì ìë ê²ë§ìŒë¡ë ì¶©ë¶ íì§ ìì ê²œì° x
ë íì¥í ì ììŽìŒ í©ëë€. using
ëª
ë ¹ì ì¬ì©í ë module.x
륌 íì¥í ì ììµëë€.
ëë ìž ë²ì§ž ìµì
: import
ê° ìê³ íì ì 첎 ìŽëŠìŒë¡ íšì륌 íì¥íŽìŒ í©ëë€.
몚ëìŽ ë€ìì€íìŽì€ì ìë ê²œì° ì 첎 ìŽëŠìŒë¡ 몚ë íšì륌 íì¥í ì ìë€ë ê²ì ì ëì ìŒë¡ ë¶ëª íì§ ììµëë€.
ëìí©ëë€. ê·žëì 묞ì륌 ë€ì ìì±íŽìŒ íë€ê³ 죌ì¥í©ëë€. ê·žë¬ë ìŽë íì¬ ë¬žì ì êŽë šìŽ ììµëë€. (1) íì¬ APIì ëí 묞ì ê°ì ì ìí ì ì곌 (2) ë ê°ì§ê° ë€ì êŽë šìŽ ìëëŒë ê°ë³ì ìŒë¡ ì ì§íë ê²ìŽ ê°ì¥ ì¢ìµëë€. 곧 (1)ì ëí PRì í ê³íì ëë€.
@tpapp 볞ì§ì ìŒë¡ ë§ìŽ ëì§ ìë ê²ì 묞ìíí ì ììµëë€. ë€ì 묞ì ì€ ìŽë ê²ë ì¬ë°ë¥Žì§ ììµëë€.
using module:x
ë x
íì¥ì íì©íì§ ìêž° ë묞ì)using
ë° import
ëŒë ë³ëì ëšìŽê° ì¡Žì¬íë ìŽì ì
ëë€."(ì 첎 ìŽëŠì ê²œì° ì€ì ë¡ ë€ìì€íìŽì€ì ìë ê²ìŒë¡ 충ë¶íêž° ë묞ì ê±°ì§ì
ëë€. 충ë¶íë€ë ê²ìŽ ëŽ ì ììŽììµëë€)import module:x
ê° íìí©ëë€. - @martinholters ì ì)ìŽë€ ì€ ìŽë ê²ìŽë íì©ë ê²ì
ëë€. ê·žë¬ë ìŽë€ ì€ ìŽë ê²ë ì€ì ë¡ íì€ìŽ ìëëë€. íì€ì íì¬ "묌걎 ê°ì žì€êž°"ì ì¬ì©ëë ë ê°ì§ ë€ë¥ž ëšìŽê° ìì§ë§ ì€ì ë¡ë ëë ·í ì¬ì© ì¬ë¡ê° ììµëë€. for
룚íë ë¶ìžì ë°ë³µí ë while
룚íì²ëŒ ìëí©ëë€. 묞ìê° ì묎늬 ë§ìë íŒëì€ëœì§ ììµëë€.
볞ì§ì ìŒë¡ ìë¯žê° ìë ê²ì 묞ìíí ì ììµëë€.
íì¬ ëªšë APIë ì ì ìëìŽ ììŒë¯ë¡ 묞ìíí ì ììµëë€.
ë€ì 묞ì ì€ ìŽë ê²ë ì¬ë°ë¥Žì§ ììµëë€.
ëŽ(ëë ë€ë¥ž ì¬ë)ì PR곌 ê±°êž°ì ìì ì€ì í ì€ížì ëí ì견ì êž°ë€ëŠŽ ë§íŒ ì¹ì íììì€. ê°ìì 묞ì륌 ê²ìíê³ ê·žê²ìŽ íë žë€ê³ 죌ì¥íë ê²ì ìŽ ë Œìì ì¡ìì ëíë ê²ì ëë€.
@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
ì ëì¹ì ì¢ìí©ëë€. (ëêµ°ê°ê° ìŽëê°ìì ì§ì íë¯ìŽ.)