ã¡ãŒãªã³ã°ãªã¹ãããïŒ
ã¹ããã¡ã³ïŒ
èŒžå ¥ãå®å šã«å»æ¢ãã
Fooã䜿çšãã
Fooã䜿çšããïŒbar1ã€ç®ã¯ãFooã®ãã€ã³ãã£ã³ã°ãããŒãããŠäœæãããã®ãšã¯ã¹ããŒããããœããããã€ã³ãã£ã³ã°ãšããŠäœ¿çšã§ããããã«ããŸãïŒçŸåšã®äœ¿çšæ¹æ³ïŒã 2ã€ç®ã¯ã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ãããå
·äœçã§ããããããŸãã¯ã¢ãžã¥ãŒã«Bããå¿
èŠãªãã¹ãŠã®èå¥åããªã¹ãããå¿
èŠãããããã§ããåäžã®ç«¶åããèå¥åã®ã€ã³ããŒããåé¿ããããã
ãã ããã€ã³ããŒãããèå¥åãæ瀺çã«ãªã¹ãããŠããå Žåã¯ããœãããã€ã³ãã£ã³ã°ãæå®ããçç±ã¯ãããŸããã èå¥åã®æ°ããã¡ãœãããå®çŸ©ããªãå ŽåïŒããŒããã€ã³ãã£ã³ã°ãšãœãããã€ã³ãã£ã³ã°ã®åäœã¯åãïŒããŸãã¯æ°ããã¡ãœãããå®çŸ©ããå ŽåïŒãœãããã€ã³ãã£ã³ã°ã¯ãã€ã³ãã£ã³ã°ãªããšåçã§ãããå¿ èŠã«å¿ããŠïŒãã®åäœã§ã¯ããªã¹ãããèå¥åãåé€ããå¿ èŠããããŸãã
ã€ãŸãã @StefanKarpinskiã®ææ¡ã奜ãã§ãã æŠå¿µçã«ã¯ãããŒããã€ã³ãã£ã³ã°ãšãœãããã€ã³ãã£ã³ã°ã®äž¡æ¹ãå¿ èŠã§ããã1ã€ã®ããŒã¯ãŒãã§ãã¹ãŠã®æçšãªåäœãååŸã§ããŸãã
ããªãã®èšã£ãŠãäºãããããŸãã ãã®å Žåã using Foo:
ïŒã³ãã³ã¯ãããã¢ã€ãã ã¯ãªãïŒã¯æŠå¿µçã«äžè²«ããŠããããã«èŠãããšããããªãã®ææ¡ã奜ãã§ãã ã³ãã³ã¯ããã«ããã·ã³ãã«ãå¶éããããšã瀺ããŠããŸããããªã¹ãããŠããŸããã
空ã®æ«å°Ÿã®:
ã¯å°ãããããããã«èŠããŸããã人ã
ã¯ããã«æ
£ãããšæããŸã
空ã®æ«å°Ÿã®ã³ãã³ã®åé¡ã¯ãçŸåšã次ã®è¡ã§ååãæ€çŽ¢ããŠããããšã§ããã€ãŸãã using Foo:
ã¯äžå®å
šã§ãããšèŠãªãããŸãã
é¢é£ïŒïŒ4600
çŸåšã®ãžã¥ãªã¢ã®æ
£ç¿ã¯ããã¹ãŠãã«ã€ã³ããŒãããããšã§ããããšãç§ã¯ç¥ã£ãŠããŸã
çŸåšã®ã¢ãžã¥ãŒã«ã®åå空éã§ããããŸã ããã¯ãã ãšæ¬åœã«æããŸã
ã¢ãžã¥ãŒã«ã®ååã ããã€ã³ããŒãããç°¡åã§èªç¶ãªæ¹æ³ã§ãã
ãŸããFooãšFoo.Barã䜿çšããå Žåã®çŸåšã®ãªãŒããŒããŒãã¯
åé¡ããã; Fooã®å
éšã«èŠããŸãããFoo.Barã®å
éšã«ã¯èŠããŸããïŒFoo.Barã
ã¢ãžã¥ãŒã«ïŒïŒ
ã¹ããã¡ã³ã®ææ¡ã§ã¯ãããã¯æ¬¡ã®ããã«å¯ŸåŠãããŠãããšæããŸã
Fooã®äœ¿çšïŒFoo
2014幎8æ14æ¥æšææ¥ã toivohnotifications @github.comã¯æ¬¡ã®ããã«æžããŠããŸãã
çŸåšã®ãžã¥ãªã¢ã®æ £ç¿ã¯ããã¹ãŠãã«ã€ã³ããŒãããããšã§ããããšãç§ã¯ç¥ã£ãŠããŸã
çŸåšã®ã¢ãžã¥ãŒã«ã®åå空éã§ããããŸã ããã¯ãã ãšæ¬åœã«æããŸã
ã¢ãžã¥ãŒã«ã®ååã ããã€ã³ããŒãããç°¡åã§èªç¶ãªæ¹æ³ã§ãããŸããFooãšFoo.Barã䜿çšããå Žåã®çŸåšã®ãªãŒããŒããŒãã¯
åé¡ããã; Fooã®å éšã«èŠããŸãããFoo.Barã®å éšã«ã¯èŠããŸããïŒFoo.Barã
ã¢ãžã¥ãŒã«ïŒïŒâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/JuliaLang/julia/issues/8000#issuecomment-52202142 ã
@kmsquireã§ãããFooã¢ãžã¥ãŒã«å ã«Fooã¢ãžã¥ãŒã«ãããå Žåã¯ã©ããªããŸããïŒ æ®å¿µãªãããããã¯ãããŸãã§ãã
ããã¯èšèšãšã©ãŒã§ãïŒãããŠèŠåãçºçããŸãïŒã®ã§ãåé¡ã§ã¯ãããŸãã
@ssfrrãææ¡ããããŒãžã§ã³ãäžçªå¥œãã§ãã
ããã±ãŒãžã«ã¯ã¢ãžã¥ãŒã«ãšã³ããªãã€ã³ãã1ã€ãããªããšããåºæ¬çãªèŠåã¯ãããŸããïŒ -- 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
ã䜿çšãããããæ¹åãããŠããŸãã
ã¯ããããã±ãŒãžãããã±ãŒãžãšã³ããªãã€ã³ããããã³ã¢ãžã¥ãŒã«ã¯1察1ã§ããããšãæåŸ
ãããŠããŸãã å¿
èŠã«å¿ããŠãã®èŠåãç Žãããšãã§ããŸãããã¢ãžã¥ãŒã«ã¯ååãä»ããããã ãã®ãã®ã§ãããæ©èœãŠãããã§ã¯ãªããããããã»ã©å¿
èŠã¯ãããŸããã import bar
ã絶察ã€ã³ããŒãã§ããã®ã«å¯Ÿããçžå¯Ÿã€ã³ããŒãã®æ§æãimport .bar
ã§ããããšãé€ããŠãããªããæèµ·ããŠããã¢ã€ãã¢ã¯ïŒ4600ã§ãã
@StefanKarpinski import .bar
ã¯å®éã«ããŒã«ã«ãã£ã¬ã¯ããªã§ãbar.jlããæ€çŽ¢ããŸããïŒ import .Bar
ã¯ããã§ã«çŸåšã®èŠªã¢ãžã¥ãŒã«ã®ãµãã¢ãžã¥ãŒã«ã®ã¿ãåç
§ããŠãããšããå°è±¡ãåããŸããã
æŽæ°ïŒãããšãããã¯ããªããïŒ4600ã§ææ¡ãããã®ã§ãã ãããã
ïŒ+1:ã ãããè¡ãå Žåã¯ã0.4ãé©åãªã¿ã€ãã³ã°ã§ãã
ïŒ+1ïŒå ã«é²ãã§ãããã®ããã€ããã¯ãªãŒã³ã¢ããããŠãã ããïŒ0.4ã®å ŽåïŒïŒ
æ¡åŒµãããã©ãããåºå¥ãã2ã€ã®ã€ã³ããŒãã¡ã«ããºã ã䜿çšãã代ããã«ãé¢æ°å®çŸ©ã®ããŒã¯ãŒããŸãã¯ã¢ãããŒã·ã§ã³ãä»ããŠæ¡åŒµãµã€ãèªäœã§æ¡åŒµãéç¥ããŸãããïŒããšãã°ãé¢æ°ã®åã«ããŒã¯ãŒãããªãŒããŒã©ã€ãããŸããïŒ 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ãªãŒããŒã©ã€ãã¯ãŒãã¯åãªãææ¡ã§ããã æ¡åŒµãŸãã¯ãã®ä»ã®æå³ã®ãããã®ã«ããããšãã§ããŸãã ãŸãããžã¥ãªã¢ã§ã¯ãã¯ããæå³ããããã @
ã¯ååšããªãã¯ãã§ãïŒ @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
ã䜿çšã§ããŸãã ããã¯ãç¹ã«ç°¡åã«ç§»è¡ã§ããŸãã
ãšããã§ãç§ãããã«æçš¿ããããã«ã using
ã¯äžè²«æ§ããªãããã«èŠããŸãã using
ãä¿æããå Žåã¯ãå¯èœã§ããã°use
ã«ååãå€æŽããå¿
èŠããããŸãã
é¢æ°ãæ¡åŒµãããšãã¯ãã¢ãžã¥ãŒã«ã®å®éåãå¿
èŠã ãšæããŸãããã®æå³ã¯ãã€ã³ããŒãããŠããæ¡åŒµãããã¿ãŒã³ãããã¯ããã«æ確ã ããã§ãã
ç§ã®å¥œããªã¢ãããŒãïŒ
using A: A
ã䜿çšããŸãimport
ãšãããäœæãããã€ã³ãã£ã³ã°ã®çš®é¡ãåé€ããŸãhttps://github.com/JuliaLang/julia/issues/8000#issuecomment -327512355ãå®è£ ããããã«çºçããå¿ èŠãããããšïŒ
using A
ã®åäœãããŒãã€ã³ããŒãA
ã«å€æŽããŸãusing A: x
ã®ãµããŒããåé€ããŸãx
ããµãã¢ãžã¥ãŒã«ã§ã¯ãªãusing A.x
ã®ãµããŒããåé€ããŸãimport A.x
ã®ãµããŒããåé€ããŸãã x
ã¯ãµãã¢ãžã¥ãŒã«ã§ã¯ãããŸãã...
æ§æã®ãµããŒããimport
ã«è¿œå ããŸãusing A: x
ã¯é »ç¹ã«äœ¿çšãããéåžžã«äŸ¿å©ã§ãã åå空éã«x
ãå¿
èŠã ãšèšã£ãŠããŸããããããæ¡åŒµããããããŸããã import A: x
ã§ã¯ã x
ãæ¡åŒµã§ããããã«ããããšèšã£ãŠããŸãã é¢æ°ã䜿çšã§ããããã«ããããšãšããããæ¡åŒµã§ããããšã«ã¯ãæå³ã®ããéãããããŸãã
èããŠã¿ããšãããã§ã®æ倧ã®åé¡ã¯ã using A.B
ã2ã€ã®ããšãè¡ãããšã§ãã B
ãã¢ãžã¥ãŒã«ã®å Žåããã¹ãŠã®ãšã¯ã¹ããŒãããœããã€ã³ããŒããããããã以å€ã®å Žåã¯ãœããã€ã³ããŒãã ãã§ãã B
ã ãããä¿®æ£ãã using A.B
ãã¢ãžã¥ãŒã«ã«ã®ã¿èš±å¯ããç¹å®ã®ãã€ã³ãã£ã³ã°ãäžåºŠã«1ã€ãã€ãœããã€ã³ããŒãããããã®using A: a, b
ãèšå®ããå¿
èŠããããšæããŸãã
import A.x
ãšåçã§ãã代ããã«ã import A: x
ãæžãæ¹æ³ã1ã€ããã°ããã®ã§ããã
ç§ãã§ããã®ã§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: x
using A
ãç¶æããããšèããŠããŸããæããã«ïŒç§ã¯ããã§è²©å£²ãããŠããŸããïŒããã€ã³ãã£ã³ã°ãã€ã³ããŒãã§ããããã«ããããšã¯éèŠãªãŠãŒã¹ã±ãŒã¹ã§ããããªãããããæ¡åŒµããããšãã§ããªããããªæ¹æ³ã å察æ¹åã«é²ãã§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
ã®äž¡æ¹ã§åãèŠåã¡ãã»ãŒãžã衚瀺ããããããåé¡ãäœã§ãããããããŸãã...
$ import A: ...
ïŒ$ãç°¡åã«ããããã«using A
ãç¶æããããšã¯ãç§ã®æèŠã§ã¯å°ãéå°ã«æããŸãã
ã¢ãžã¥ãŒã«ãã¬ãã£ãã¯ã¹ã匷å¶çã«åŠçããŠããŸãããïŒ
ã¯ã; é¢æ°ãæ¡åŒµããããã«é¢æ°ã修食ããå¿ èŠãããå Žåããã®ç¹ã¯é¢ä¿ãããŸããã
éå°ã€ã³ããŒãã容æã«ããããã«Aã䜿ãç¶ããAïŒ...ç§ã®æèŠã§ã¯å°ãéå°ã«æããŸãã
ç§ã¯ãããå察ã®èŠæ¹ã§èŠãŠããŸãã ããŒã¯ãŒãã1ã€ãããªããšãã人çºçãªèŠä»¶ãæºããããã ãã«ã人ã
ãusing A
ïŒããã¯çŽ æŽããããŠçããç§ãã¡ã¯çæ
£ããŠããŸãïŒããimport A: ...
ã«åãæ¿ããããŸãã
ã¹ã¬ãããèªããšã2ã€ã®ããŒã¯ãŒããæã€ããšã®äž»ãªäŸ¡å€ã¯ãæ¡åŒµã§ãããã€ã³ãã£ã³ã°ãšæ¡åŒµã§ããªããã€ã³ãã£ã³ã°ïŒããŒããã€ã³ãã£ã³ã°ïŒãåºå¥ããããšã§ããããã«æãããŸãã ããã念é ã«çœ®ããŠãç§ã¯2ã€ã®å®è¡å¯èœãªè§£æ±ºçããããšæããŸãã
using
ãšextending
ããå§ãããŸãã import
ã¯åé¡ãããŸãããã extending
ã¯ã2çªç®ã®ããŒã¯ãŒããååšããçç±ãæããã«ããŸããããã®å Žåããã¢ãžã¥ãŒã«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ãã... 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
ã®æ¡åŒµãèš±å¯ããŸãã ãããã£ãŠããã®ä»®å®ãæ¡çšããŠããã¥ã¡ã³ããèªããšãããã«é¢ãã2ã€ã®ããšãééã£ãŠããããšãããããŸãã
using module
ã䜿çšãããšã module.x
ãæ¡åŒµã§ããŸãã ãããã£ãŠãåŠç¿è
ã®èŠéããããããšã using module
ã«ã¯å¯äœçšãããã import module
ã®ããã«æ©èœããŸããã€ãŸãã module.x
æ¡åŒµå¯èœã«ããŸãã ãããŠãç©äºãæ¡åŒµå¯èœã«ããããšã¯ã using
import
ïŒ$ã®ããšã§ããimport
ãšã¯å¯Ÿç
§çã«ã using
ã¯ã module
ã ãã§ãªãããã®äžã®ãã¹ãŠã®ãã®ãå©çšå¯èœã«ããŸãããããç§ãèªåã®ããŒãã«ã§è¡šçŸããããšãããã®ã§ãã 2ã€ã®ç°ãªãåèªã䜿çšãããŠããå ŽåïŒã€ã³ããŒã/䜿çšïŒããããã¯2ã€ã®ç°ãªãããšãè¡ãå¿
èŠããããããã¯æ確ã§ããå¿
èŠããããŸãã using
ãæ¡åŒµãèš±å¯ããå Žåãšèš±å¯ããªãå Žåã¯ãäºæž¬ã§ããªãåäœã«ãªããŸãã
@martinholtersã瀺åããŠããããã«ãã€ã³ããŒããå®å
šã«åé€ããããšããå§ãããŸãã ç¹å®ã®ããšã«ã©ã³ãã ã«äœ¿çšããã2ã€ã®åèªã䜿çšããããšã¯ã§ããŸããã import
ãç¹å®ã®é¢æ°ãã€ã³ããŒããããšãã«æ¡åŒµå¯èœã«ããããšãæå³ãã using module: foo
ããããèš±å¯ããªãå Žåãåå空éã«module
ã®ã¿ãå«ãããšåãåäœãçºçããã¯ãã§ãã
ã¢ãžã¥ãŒã«ãåå空éã«ããå Žåãä»ãããã«ããŒã ã§ãã¹ãŠãæ¡åŒµã§ãããããšãã£ãŠããããæçœãŸãã¯åçŽãªããšã§ãããšã¯éããŸããã
åå空éã«å«ãŸããŠããã ãã§ååã§ããå Žåã using module:x
ã䜿çšããŠåå空éã«å«ããå ŽåããŸãã¯åå空éã«å«ãŸããŠããã ãã§ã¯äžååãªå Žåã¯ã x
ãæ¡åŒµã§ããã¯ãã§ãã using
ã³ãã³ãã䜿çšãããšã$ module.x
ãæ¡åŒµã§ããŸããã
ãŸãã¯3çªç®ã®ãªãã·ã§ã³ïŒ import
ã¯ãªããåžžã«ãã«ããŒã ã§é¢æ°ãæ¡åŒµããå¿
èŠããããŸãã
ã¢ãžã¥ãŒã«ãåå空éã«ããå Žåããã¹ãŠã®é¢æ°ããã«ããŒã ã§æ¡åŒµã§ããããšã¯çµ¶å¯Ÿã«æããã§ã¯ãããŸããã
ç§ã¯åæããŸãããããç§ãããã¥ã¡ã³ãã®æžãçŽãã䞻匵ããçç±ã§ãã ããããããã¯çŸåšã®åé¡ã«æ£æ¥ããŠããŸãã ïŒ1ïŒçŸåšã®APIã«é¢ããããã¥ã¡ã³ããæ¹åããããã®ææ¡ãšãïŒ2ïŒ2ã€ãããããé¢é£ããŠããå Žåã§ãããããå¥ã ã«åèšèšããããã®ææ¡ãä¿æããã®ãæåã§ãã è¿ããã¡ã«ïŒ1ïŒã®PRãããäºå®ã§ãã
@tpappæ¬è³ªçã«æå³ããªããªããã®ãææžåããããšã¯ã§ããŸããã ãããã®ããã¥ã¡ã³ãã¯ã©ã¡ããæ£ãããããŸããã
using module:x
ã§ã¯x
ãæ¡åŒµã§ããªãããïŒusing
ãšimport
ãååšããçç±ã§ããïŒãã«ããŒã ã®å Žåãå®éã«ã¯åå空éã«ååšããã ãã§ååã§ãããããfalse-ãããåæ¢ããŸãååã§ããããšãç§ã®ææ¡ã§ããïŒimport module:x
ãå¿
èŠã«ãªããŸã- @martinholtersã®ææ¡ïŒãããã®ãããã蚱容ãããŸãã ãããããããã®ã©ããå®éã«ã¯çŸå®ã§ã¯ãããŸããã çŸåšãããã®ãã€ã³ããŒããããã«ã¯2ã€ã®ç°ãªãåèªã䜿çšãããŠããŸãããå®éã«ã¯æ確ãªãŠãŒã¹ã±ãŒã¹ã¯ãããŸããã ããã¯ãããŒã«å€ãå埩åŠçãããšã for
ã«ãŒããwhile
ã«ãŒãã®ããã«åäœããå Žåããããããªãã®ã§ãã ããã¥ã¡ã³ãã®éããããæ··ä¹±ãããªãããã«ããããšã¯ãããŸãã
æ¬è³ªçã«æå³ããªããªããã®ãææžåããããšã¯ã§ããŸããã
çŸåšã®ã¢ãžã¥ãŒã«APIã¯æ確ã«å®çŸ©ãããŠãããããææžåã§ããŸãïŒãã§ã«ææžåãããŠããã®ã§ããã£ãšè¯ãã¯ãã ãšæããŸãïŒã
ãããã®ããã¥ã¡ã³ãã¯ã©ã¡ããæ£ãããããŸããã
ç§ïŒãŸãã¯ä»ã®èª°ãïŒã®PRãåŸ ã£ãŠãããã«ããå®éã®ããã¹ãã«ã€ããŠã³ã¡ã³ãããŠãã ããã æ¶ç©ºã®ããã¥ã¡ã³ããäœæãããããæ£ãããªããšäž»åŒµããããšã¯ããã®è°è«ã«ãã€ãºãè¿œå ããã ãã§ãã
@tpappå€åç§ã¯èšãã¹ãã ã£ãã
æ¬è³ªçã«æå³ããªããªããçŽããããæ¹æ³ã§äœããææžåããããšã¯ã§ããŸãã
ã€ãŸããããæå³ã§ãã³ãŒãã¯å¿ èŠãªãã¹ãŠã®ããã¥ã¡ã³ãã§ãã ããã®ã©ããæªããã ãïŒ ãããæ¶åããã®ã«ãããæéã ãããŠããããäŸå€ã«æºã¡ãŠããã®ã§ãç§ã¯çŸåšãããã©ã®ããã«æ©èœãããã説æããç°¡åãªæ¹æ³ãèŠãŠããŸããã ããããååšããŠã¯ãªããªãäŸå€ã
ç§ãäŒããããšããŠããããšãæ¬åœã«èŠãŠããŸãããïŒ
çŸåšã®ç¶æ³ã¯äžå¿ èŠã«è€éã§ãããææžåãäžååã§ãããšããäžè¬çãªåæããããšæããŸãã ãããŠééããªããæ©æ¢°ãåçŽåããããšã§ææžåã容æã«ãªããŸãã ãããããã®ãããªåçŽåã¯ç Žç¶»ããã®ã§ã2.0ããåã«è¡ãããšã¯ã§ããŸããã ããã§ããã以åã®ããã¥ã¡ã³ãã®æ¹åã¯æå³ããªããšããããªãã®ãã€ã³ãã¯ãããŸããïŒ ããããç§ã¯åæããŸããã ç§ã¯2ã€ã®å¥ã ã®åé¡ãèŠãŠããŸãïŒ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ã䜿çšãããšã1è¡ã倱ã代ããã«ã using
ãŸãã¯import
ã®ããããã®åäžã®ããŒã¯ãŒãã«çµ±åã§ããŸãã
using LinearAlgebra, Random, StaticArrays
倧ããªå€åãèæ ®ããªããŠããããã䟡å€ããããã©ããã¯ããããŸããã
ããã¯ãå ã®èšèšãèŠéããã¯ãªãŒã³ãªãœãªã¥ãŒã·ã§ã³ãæäŸããåé¡ã®1ã€ã§ã¯ãããŸããã ãã¬ãŒããªãããããŸãã ç§ã¯åŸ ã£ãŠãçŸåšã®ïŒ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
ã®å¯Ÿç§°æ§ã奜ãã§ãã ïŒèª°ããã©ããã§ææããããã«ãïŒ