Julia: 필요, 가젞였Ʞ 및 가젞였Ʞ륌 제거하고 병합하여 사용

에 만든 2014년 08월 14음  Â·  72윔멘튞  Â·  출처: JuliaLang/julia

메음링 늬슀튞에서:

슀테판:

나는 우늬가 수입을 완전히 없애알 한닀고 생각합니닀.

푞륌 사용하여
Foo 사용: 바

첫 번짞는 Foo에 대한 바읞딩을 로드하고 생성하여 낎볎낎Ʞ륌 "소프튞" 바읞딩윌로 사용할 수 있도록 합니닀(지ꞈ 사용하는 작업). 두 번짞는 또한 Foo에 대한 바읞딩을 로드 및 생성하고 막대륌 "하드" 바읞딩윌로 사용할 수 있도록 합니닀(지ꞈ 가젞였Ʞ가 수행하는 작업)."

읎것은 아직 신규 읎믌자듀에게 상당히 혌란슀러욎 지점읞 것 같습니닀.

breaking design modules speculative

가장 유용한 댓Ꞁ

나는 import 와 export 의 대칭을 좋아합니닀. (누군가가 얎딘가에서 지적했듯읎.)

몚든 72 댓Ꞁ

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 묞에 대한 전첎 팚킀지 낎용을 삎펎뎐알 합니닀.

가젞옚 바읞딩 덮얎쓰Ʞ에 대한 겜고가 여전히 표시됩니까?

나는 귞것읎 싀제로 였류띌고 생각합니닀.

두 킀워드륌 몚두 유지하지만 여전히 작업을 앜간 닚순화하는 또 닀륞 제안읎 떠돌고 있습니닀.

  1. import A: ... 구묞 추가
  2. using A: 지원 쀑닚
  3. 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 가 더 귌볞적읞 것 같습니닀).

찚읎점은 닀음곌 같습니닀.

  • import A: x, y # 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개의 킀워드륌 갖는 것의 죌된 가치는 확장 가능한 바읞딩(하드 바읞딩)을 구분하는 것 같습니닀. 읎륌 엌두에 두고 두 가지 싀행 가능한 솔룚션읎 있닀고 생각합니닀.

  • 1개의 킀워드 + 확장을 위한 접두사 필요
  • 두 개의 킀워드, 하나는 음반(비확장) 사용을 위한 것읎고 닀륞 하나는 확장 사용을 위한 것읎며 읎 겜우 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 도 귞렇게 합니닀.
grafik
(https://docs.julialang.org/en/v1/manual/modules/에서)

우늬 쀑 얎느 쪜읎 옳은지는 별로 쀑요하지 않습니닀. 두 겜우 몚두 몚든 것읎 묎엇읞지 파악할 수조찚 없닀멎 현재 상황은 분명히 엉망입니닀.

@mbauman 좋은 점 - 잊얎 버렞습니닀. * 에 대핎서는 using 가 import #$륌 믞러링하는 구조에 대핮 전혀 신겜쓰지 않습니닀. 따띌서 더 적절한 Ʞ혞가 있윌멎 all , __all__ , everything , exported , ...? 나는 귞것을 위핎 몚든 것입니닀. 더 많은 것을 가젞였는 것은 아마도 더 입력핚윌로썚 반영되얎알 한닀고 생각합니닀.

귞러나 당신읎 귞것을 전혀 원하지 않는닀멎 묌론 갈 수도 있습니닀.

| | 사용 가능하게 하닀 (사용) | 확장 가능(가젞였Ʞ) |
| ------------------ | ------------------------ | -------------------------- |
| 전용 몚듈 | using module: module | import module: module |
| 몚든 수출 | using module | import module |
| 특정한 것듀 | using module: x,y | import module: x,y |

또는

| | 사용 가능하게 하닀 (사용) | 확장 가능(가젞였Ʞ) |
| ------------------ | ------------------------ | -------------------------- |
| 전용 몚듈 | using module | import module |
| 몚든 수출 | using module: module | import module: module |
| 특정한 것듀 | using module: x,y | import module: x,y |

귞러나 최종 결곌가 묎엇읎든 음ꎀ성읎 있얎알 합니닀. 귞늬고 현재로서는 귞렇지 않습니닀.

using A 는 A.f 자첎륌 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 )로 확장할 수 없는 가젞였Ʞ가 필요한지 여부입니닀. 귞러나 귞것읎 깚지Ʞ 때묞에 맀뉎얌 챕터는 ê·ž 사읎에 닀시 작성하는 것읎 도움읎 될 것입니닀. 많은 사용자는 전첎륌 혌란슀럜게 생각합니닀.

읎것은 묞서에서 현상 유지에 접귌하는 방법입니닀.

  1. using M 는 몚듈을 로드하고 M 및 낎볎낞 Ʞ혞륌 넀임슀페읎슀로 가젞옵니닀. 수출읎 쀑요한 유음한 겜우입니닀.
  2. M 가 있윌멎 M.y 와 같은 정규화된 읎늄을 사용하여 (a) 낎볎낎지 않은 Ʞ혞에 액섞슀하고 (b) 낎볎낎Ʞ 여부에 ꎀ계없읎 핚수에 메서드륌 추가할 수 있습니닀.
  3. Julia는 M.f 와 같은 정규화된 읎늄을 사용하지 않는 한 핚수에 메서드륌 추가하는 것을 방지합니닀.
  4. ... import M: f , 메서드륌 정의할 때 f 만 사용할 수 있습니닀.
  5. import M 및 using M: x 는 각각 M 또는 x ( M 아님) 륌 넀임슀페읎슀로 가젞였Ʞ 위한 것입니닀. ì–Žë–€ 사람듀은 팚킀지 윔드에서 읎러한 형식을 사용하여 넀임슀페읎슀륌 깚끗하게 유지하Ʞ륌 좋아합니닀(여Ʞ에서 ꎀ렚 슀타음 가읎드 링크).

죌묞은 고꞉ 사용에서 발생하는 사용 사례륌 닀소 반영합니닀. 위의 몚든 사항은 M 대신 M.A 가 있는 하위 몚듈에 적용됩니닀.

읎것은 얎떻습니까?

  • using M 는 M 을 범위로 가젞옵니닀.
  • using M: x 는 M.x 륌 범위로 가젞옵니닀( x ).
  • using M: ... 는 낎볎낞 M 의 몚든 Ʞ혞륌 범위로 가젞옵니닀.
  • using M: x, ... 는 낎볎낞 몚든 M Ʞ혞륌 범위로 가젞였고 x (낎볎낎지 않을 수 있음)도 가젞옵니닀.
  • import 가 없습니닀. Ʞ능을 확장하렀멎 정규화된 읎늄을 사용핎알 합니닀. (또는 using M; const foo = M.foo 는 읎믞 지ꞈ 할 수 있습니닀.)
  • 위의 몚든 항목에서 M 는 하위 몚듈음 수도 있습니닀. 예륌 듀얎 Foo.Bar 및 x 는 현재 의믞에서 x as y 수도 있습니닀.

또는 using import 륌 사용하여 https://github.com/JuliaLang/julia/issues/8000#issuecomment -355960915와 동음하게 만듭니닀.

맀우 음반적윌로 사용됩니닀(특히 "슀크늜튞"에서, 귞러나 특정 슀타음에 대한 팚킀지에서도 사용됚)

using Foo, Bar, Baz

낎볎낞 Ʞ혞에만 의졎합니닀. 읎것을 가장 닚순하게, 아마도 지ꞈ처럌 간닚하게 유지하멎 앜간의 읎점읎 있을 것입니닀.

@tpapp

였핎하신 것 같아요. 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 의 확장을 허용합니닀. 따띌서 읎 가정을 췚하고 묞서륌 읜윌멎 읎에 대핮 두 가지가 잘못되었음을 알 수 있습니닀.

  1. using module 륌 사용하멎 module.x 륌 확장할 수 있습니닀. 따띌서 학습자 예잡 using module 에는 import module 처럌 작동하는 부작용 읎 있습니닀. 슉, module.x 확장 가능하게 만듭니닀. 귞늬고 확장 가능하게 만드는 것은 using 가 아니띌 import $#$입니닀.
  2. import 와 달늬 using 는 module 뿐만 아니띌 ê·ž 안에 있는 몚든 것을 사용할 수 있게 합니닀.

읎것읎 제가 제 테읎랔로 표현하렀고 한 것입니닀. 두 개의 닀륞 ë‹šì–Žê°€ 사용되멎(가젞였Ʞ/사용) 두 가지 닀륞 작업을 수행핎알 하며 읎는 명확핎알 합니닀. using 가 확장을 허용하는 겜우가 있고 귞렇지 않은 겜우에는 예잡할 수 없는 동작입니닀.

좋은 대안은 @martinholters 가 제안한 대로 가젞였Ʞ륌 완전히 제거하는 것입니닀. 특정 음에 묎작위로 사용되는 두 닚얎륌 가질 수는 없습니닀. import 가 특정 핚수륌 가젞올 때 확장 가능하게 만드는 것을 의믞하지만 using module: foo 에서는 읎륌 허용하지 않는 겜우 넀임슀페읎슀에 module 만 포핚할 때 동음한 동작읎 발생핎알 합니닀.

몚듈읎 넀임슀페읎슀에 있는 겜우 지ꞈ 바로 전첎 읎늄윌로 몚든 것을 확장할 수 있닀고 í•Žì„œ 읎것읎 명백하거나 직접적읞 의믞는 아닙니닀.

넀임슀페읎슀에 있는 것만윌로도 충분하며 using module:x 로 넀임슀페읎슀에 포핚하거나 넀임슀페읎슀에 있는 것만윌로는 충분 하지 않은 겜우 x 도 확장할 수 있얎알 합니닀. using 명령을 사용할 때 module.x 륌 확장할 수 없습니닀.
또는 ì„ž 번짞 옵션: import 가 없고 항상 전첎 읎늄윌로 핚수륌 확장핎알 합니닀.

몚듈읎 넀임슀페읎슀에 있는 겜우 전첎 읎늄윌로 몚든 핚수륌 확장할 수 있닀는 것은 절대적윌로 분명하지 않습니닀.

동의합니닀. 귞래서 묞서륌 닀시 작성핎알 한닀고 죌장합니닀. 귞러나 읎는 현재 묞제와 ꎀ렚읎 있습니닀. (1) 현재 API에 대한 묞서 개선을 위한 제안곌 (2) 두 가지가 닀소 ꎀ렚읎 있더띌도 개별적윌로 유지하는 것읎 가장 좋습니닀. 곧 (1)에 대한 PR을 할 계획입니닀.

@tpapp 볞질적윌로 말읎 되지 않는 것을 묞서화할 수 없습니닀. 닀음 묞서 쀑 얎느 것도 올바륎지 않습니닀.

  1. "넀임슀페읎슀에 있는 몚든 것을 확장할 수 있습니닀"( using module:x 는 x 확장을 허용하지 ì•Šêž° 때묞에)
  2. "넀임슀페읎슀에 있는 것만윌로는 확장에 충분하지 않습니닀. 읎것읎 using 및 import 띌는 별도의 ë‹šì–Žê°€ 졎재하는 읎유입니닀."(전첎 읎늄의 겜우 싀제로 넀임슀페읎슀에 있는 것윌로 충분하Ʞ 때묞에 거짓입니닀. 충분하닀는 것읎 낮 제안읎었습니닀)
  3. "읎늄 공간에 있는 몚든 것을 전첎 읎늄윌로 확장할 수 있습니닀."(완전한 사싀읎 되Ʞ 위핎 졎재륌 쀑지하렀멎 import module:x 가 필요합니닀. - @martinholters 제안)

읎듀 쀑 얎느 것읎든 허용될 것입니닀. 귞러나 읎듀 쀑 얎느 것도 싀제로 현싀읎 아닙니닀. 현싀은 현재 "묌걎 가젞였Ʞ"에 사용되는 두 가지 닀륞 ë‹šì–Žê°€ 있지만 싀제로는 뚜렷한 사용 사례가 없습니닀. for 룚프는 부욞을 반복할 때 while 룚프처럌 작동합니닀. 묞서가 아묎늬 많아도 혌란슀럜지 않습니닀.

볞질적윌로 의믞가 없는 것을 묞서화할 수 없습니닀.

현재 몚듈 API는 잘 정의되얎 있윌므로 묞서화할 수 있습니닀.

닀음 묞서 쀑 얎느 것도 올바륎지 않습니닀.

낮(또는 닀륞 사람)의 PR곌 거Ʞ에 있을 싀제 텍슀튞에 대한 의견을 Ʞ닀늎 만큌 친절하십시였. 가상의 묞서륌 게시하고 귞것읎 틀렞닀고 죌장하는 것은 읎 녌의에 잡음을 더하는 것입니닀.

@tpapp 아마도 ë‚Žê°€ 말했얎알 했는데,

볞질적윌로 읎핎되지 않는 혌란슀럜지 않은 방식윌로 묎얞가륌 묞서화할 수 없습니닀.

ì–Žë–€ 의믞에서 윔드는 필요한 몚든 묞서입니닀. 귞게 묎슚 묞제알? 소화하는 데 걞늬는 시간입니닀. 귞늬고 나는 현재 귞것읎 얎떻게 작동하는지 섀명할 ê°„ë‹ší•œ 방법읎 없습니닀. 왜냐하멎 예왞로 가득 ì°š 있Ʞ 때묞입니닀. 애쎈에 있얎서는 안되는 예왞.

제가 전달하렀는 낎용읎 정말 읎핎가 안 가시나요?

현재 상황읎 불필요하게 복잡하고 묞서화가 부적절하닀는 데 음반적윌로 동의한닀고 생각합니닀. 귞늬고 의심할 여지 없읎 Ʞ계륌 닚순화하멎 묞서화가 더 쉬워질 것입니닀. 귞러나 귞러한 닚순화는 깚질 것읎므로 2.0 읎전에는 할 수 없습니닀. 귞렇닀멎 ê·ž 읎전의 묞서 개선읎 말읎 되지 않는닀는 것읎 당신의 요점입니까? 귞럌 저는 동의하지 않습니닀. 두 가지 개별 묞제가 있습니닀. 2.0(읎 묞제에 ꎀ한)윌로 닚순화핎알 하는 것입니닀. 여Ʞ에는 필요한 묞서 업데읎튞가 포핚되얎 있고 읎 슀레드륌 읜음윌로썚 맀우 필요한 것처럌 볎읎지만 또 닀륞 묞제읞 현재 작업의 묞서륌 개선할 수 있습니닀. .

#38271을 하고 난 후, 나는 ë›°ì–Žë‚œ 질묞듀읎

닀륞 몚듈의 핚수에 메서드 추가륌 처늬하는 방법

  1. 항상 정규화된 읎늄( Foo.bar() = ... )읎 필요합니닀.
  2. 또한 Ʞ혞가 범위( using Foo: bar; bar() = ... )에 있을 때만 허용합니닀.
  3. (2), 귞러나 특별한 방법윌로 범위륌 가젞옵니닀( 현재 상태 , import Foo: bar; bar() = ... ).

낎볎낎Ʞ 목록곌 몚듈 읎늄만 처늬하는 구묞

  1. using Foo 는 Foo 의 몚든 낎볎낞 Ʞ혞륌 범위로 가젞였고 import Foo 는 몚듈( 현재 상태 )만 가젞옵니닀.
  2. using Foo: ... 또는 Ʞ타 유사한 구묞, 닀음 using Foo 몚듈.

(1|2) & 2는 using 또는 import 쀑 하나의 닚음 킀워드로 통합할 수 있윌며 한 쀄을 잃게 됩니닀.

using LinearAlgebra, Random, StaticArrays

람레읎킹 첎읞지륌 고렀하지 않아도 귞만한 가치가 있는지 확신할 수 없습니닀.

읎것은 원래 디자읞읎 놓친 깚끗한 솔룚션을 제공하는 묞제 쀑 하나가 아닙니닀. 절충안읎 있습니닀. 현재(1.0) 섀정을 유지하멎서 더 나은 묞서가 사용자 겜험을 개선할 수 있는지 Ʞ닀렀볎고 싶습니닀.

2.0의 겜우 구묞을 정늬하여 싀제로 음얎나는 음을 볎닀 음ꎀ성 있고 섀명하는 것읎 좋을 것읎띌고 생각합니닀. 닀음곌 같은 것:

| 읎전 | 후 |
|-|-|
| using Foo | useall from Foo |
| import Foo | use Foo |
| using Foo: a | use a from Foo |
| import Foo: a 및 import Foo.a | extend a from Foo |

읎 페읎지가 도움읎 되었나요?
0 / 5 - 0 등꞉