broadcast
์ด ๋ฐ๋ณต์์ ํจ๊ป ์๋ํ์ง ์๋๋ค๋ ์ฌ์ค์ด ๋๋์ต๋๋ค.
dict = Dict(:a => 1, :b =>2)
<strong i="7">@show</strong> string.(keys(dict)) # => Expected ["a", "b"]
"Symbol[:a,:b]"
์ด๊ฒ์ Broadcast.containertype
๋ฐํํ๋ Any
https://github.com/JuliaLang/julia/blob/413ed79ec54f3a754ac8bc57c1d29835d17bd274/base/broadcast.jl#L31
https://github.com/JuliaLang/julia/blob/413ed79ec54f3a754ac8bc57c1d29835d17bd274/base/broadcast.jl#L265 ์์ ๋์ฒด๋ก ์ด์ด์ง๋๋ค.
containertype
๋ฅผ ํด๋น iterator์ ๋ํด Array
๋ก ์ ์ํ๋ฉด size
๋ฅผ ํธ์ถํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. broadcast
๋ iterator ์ธํฐํ์ด์ค iteratorsize(IterType)
๋ํด ํ์ธํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
map
๋ broadcast(f, Any, A) = f(A)
์ ํ์ฌ ์ ์๋ณด๋ค ๋ ํฉ๋ฆฌ์ ์ผ ์ ์๋ ๋์ฒด map(f, A) = collect(Generator(f,A))
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ด๊ฒ์ ์๋์ ์
๋๋ค. broadcast
๋ ๋ชจ์์ด ์๋ ์ปจํ
์ด๋์ฉ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. map
๋ ๋ชจ์์ด ์๋ ์ปจํ
์ด๋์ฉ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐ๋ณต์๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด broadcast
๋ ๋ฌธ์์ด์ "์ค์นผ๋ผ"๋ก ์ทจ๊ธํ๋ ๋ฐ๋ฉด map
๋ ๋ฌธ์๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
์๋ง๋ ๋ฌธ์ ๋ ์ฌ๋๋ค์ด ์๋ก์ด ์ ๊ตฌ๋ฌธ์ด ๋๋ฌด ํธ๋ฆฌํ๋ค๊ณ ์๊ฐํ๋ค๋ ๊ฒ์
๋๋ค. ํ์ง๋ง ๊ณผ๊ฑฐ์๋ map
๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ๊ณ ์ ํ๋ ๋ฐ๋์ด ์์์ต๋๋ค. ๋ถํํ๋ ์ ๊ตฌ๋ฌธ์ ์ด๋ฏธ ์ฌ์ฉ ์ค์
๋๋ค.
๋ํ @stevengj ๊ฐ ์ด์ ์ ์ง์ ํ๋ฏ์ด map
์ broadcast
์ฌ์ด์๋ ์ฐจ์ด๊ฐ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ ๋ค ๊ฐ๋ ์๋ฏธ๊ฐ ๋ฌด์์
๋๊น?
@stevengj ๊ทธ๋ฌ๋ Iterator๋ ๋ชจ์(ํนํ ์์ฑ๊ธฐ)์ ๊ฐ์ง๊ณ ์์ต๋๋ค. http://docs.julialang.org/en/release-0.5/manual/interfaces/#interfaces
๋๋ ๋ฐ๋ณต์๊ฐ ์ด ์ด์ํ ์์ญ์ ์๋ค๊ณ ์ฃผ์ฅํ๊ณ ์ถ์ต๋๋ค. ์ปจํ
์ด๋๋ก ํ๊ณ ์ถ์ ๋๋ถ๋ถ์ ์ผ์ด๋ฉฐ, ๋ฐ๋ณต์๋ก๋ ํ๊ณ ์ถ์ ์ผ์ด๋ฉฐ, ์๋ง๋ ์์ ํ .
๊ตฌ๋ฌธ์ด ๋๋ฌด ํธ๋ฆฌํ๋ค๋ ์ฌ์ค์ผ ๊ฒ์
๋๋ค. (๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ์ป๋ ์ค๋ฅ๋ ๋งค์ฐ ๋ถํฌ๋ช
ํฉ๋๋ค).
@pabloferz map
์ broadcast
์ ์ฃผ์ ์ฐจ์ด์ ์ ์ค์นผ๋ผ ์ฒ๋ฆฌ์
๋๋ค. ์ด์ ์ค์นผ๋ผ์ ์ ์๋ ๋
ผ์์ ์ฌ์ง๊ฐ ์์ผ๋ฉฐ length(x) > 1
๊ฐ ์๋ ๋ชจ๋ ๊ฒ์ ์ค์นผ๋ผ๋ก ๊ฐ์ฃผํด์๋ ์ ๋ฉ๋๋ค.
ํจ์ ํธ์ถ ์์ฒด ๋์ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํ ์ธ์๋ฅผ ํ์ํ๋ฉด ๋ชจํธ์ฑ์ด ์ ๊ฑฐ๋ฉ๋๋ค. ์ ์๊ฐ์๋?
broadcast
(์ผ๋ฐ์ ์ผ๋ก ์ ๋ ๋ฏฟ์ต๋๋ค)์ ๊ฒฝ์ฐ ๋ชจ์์ด ์๋ค๋ ๊ฒ์ size
( length
๋ฟ๋ง ์๋๋ผ)๋ฅผ ๊ฐ๊ณ ์๊ณ ์ธ๋ฑ์ฑํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ํํ์ ์ ์ธํ๊ณ size
๊ฐ ์๋ ๋ค๋ฅธ ๊ฒ์ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ํ์ฌ ๊ตฌํ์ด ์ฃผ์ด์ง๋ฉด ๋จผ์ getindex
ํ๊ฑฐ๋ ๋ธ๋ก๋์บ์คํธํ๋ ค๋ ๊ฐ์ฒด์ ๋ํด ์ ์ํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ฐ๋ณต์์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ๋ถ๋ช์ณค๋ค. #16769์์ ๊ณ ์ ๊ฐ ๋์ ์ ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํ๊ฐํ์ฌ ๋ฐฐ์ด์ fill!
ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์๋๋ฐ ์ ๊ตฌ๋ฌธ์ด ์ด๋ฏธ ํธ๋ฆญ์ ์ํํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ a = zeros(2, 3); a .= [rand() for i=1:2, j=1:3]
์๋ํ๋ฉด ๋ ์ ๋ ดํ a .= (rand() for i=1:2, j=1:3)
๊ฐ ์๋ํ์ง ์์ต๋๋ค. ์ด ์์ฑ๊ธฐ๋ HasShape()
์ด์ง๋ง ์ค์ ๋ก ์ธ๋ฑ์ฑ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ธ๋ก๋์บ์คํธ/์ ๊ตฌ๋ฌธ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ต์ํ์ง๋ง ์ธ๋ฑ์ฑ ๊ธฐ๋ฅ์ ๋ํ ํน์ฑ์ ๊ฐ๋ ๊ฒ์ด ์ฌ๊ธฐ์ ๋์์ด ๋ ๊น์? ์ด๋ฏธ PR(#22489)์ด ์์ต๋๋ค...
@rfourquet , ๋น์ ์ a = zeros(2, 3); a .= rand.()
ํ ์ ์์ต๋๋ค
์, ํ์ง๋ง ๋ ์ ํํด์ผ ํฉ๋๋ค. a .= (f(i, j) for i=1:2, j=1:3)
์ ๊ฐ์ด ์ธ๋ฑ์ค๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ ธ์ค๋ ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
HasShape
๋ฐ๋ณต์์ ๋ธ๋ก๋์บ์คํ
์ฐจ์์ ๋จ์ ์ ๋ฌด์์
๋๊น? ๊ทธ๊ฒ์ ๋น์ฐํ ์ผ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
@nalimilan , ์ธ๋ป๋ณด๊ธฐ์ ํฉ๋ฆฌ์ ์ด๊ณ ๊ตฌํํ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊นจ์ง ๊ฒ์ด๋ฏ๋ก 1.0๊น์ง ์๋ฃํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ์ค ํ๋๋ HasShape
๋ฐ๋ณต์๊ฐ ๋ฐ๋์ getindex
์ง์ํ์ง ์๊ณ ๊ตฌํํ๊ธฐ ๊น๋ค๋ก์ธ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
ํ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ ์ผ์์ ์ผ๋ก(1.0์ ๊ฒฝ์ฐ) ๋ฐฉ๊ธ ๋ฐฐ์ด์ ๋ณต์ฌํ ๊ฐ๋จํ ๊ตฌํ์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ต์ ํ ํฌ์คํธ 1.0์ด ํ์ฉ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ํ ํ ๊ฐ์ง ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ HasShape ๋ฐ๋ณต์๊ฐ ๋ฐ๋์ getindex๋ฅผ ์ง์ํ์ง ์์ผ๋ฉฐ ๊ตฌํํ๊ธฐ๊ฐ ๊น๋ค๋ก์ธ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์์์ ๋งํ๋ฏ์ด #22489์ PR์ด ์์ด ์ด๊ฒ์ด ๋์์ด ๋ ๊ฒฝ์ฐ ๋ฐ๋ณต์์ ๋ํ ์ธ๋ฑ์ฑ์ ํ์ฉํฉ๋๋ค.
์ต์ํ 1.x์์ ๋์์ ๊ฐ์ ํ ์ ์๋๋ก 1.0์์ ์ํํด์ผ ํ๋ ์์ ์ ๋ฌด์์ ๋๊น?
@nalimilan์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์์ต๋๋ค. ๋ธ๋ก๋์บ์คํธ ํํ์์ ์ค๋ฅธ์ชฝ์ HasShape
์์ฑ๊ธฐ๋ฅผ ํ์ฉํ๋ ๊ฒ์ด 1.0์ ๋ํด ๊ตฌํํ ์ ์๋ ๊ฒฝ์ฐ ์์ฑ๊ธฐ๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ ๋์ ์ง๊ธ ์ด๊ฒ์ ์ค๋ฅ๋ก ๋ง๋ค์ด์ผ ํฉ๋๊น? 1.x์์ ํ์ฑํํ ์ ์์ต๋๋ค.
:+1: Triage๋ ์ด๊ฒ์ ์ค๋ฅ๋ก ๋ง๋ค๊ฑฐ๋(์์ ํ ์ ํ) collect
๋ฅผ ํธ์ถํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค(์ฌ์ด ๊ฒฝ์ฐ).
map
๋ ๋ชจ๋ ์ธ์๋ฅผ ์ปจํ
์ด๋๋ก ์ทจ๊ธํ๊ณ ๋ชจ๋ ์ธ์์ ๋ํด ๋ฐ๋ณต์ ์๋ํฉ๋๋ค. ๋ด ์ด์์ ์ธ ์ธ๊ณ์์ broadcast
๋ ๋น์ทํ ๊ฒ์ด๋ฉฐ ๋ชจ๋ ์ธ์๊ฐ ๋ธ๋ก๋์บ์คํธํ ์ ์๋ ๋ชจ์์ ๊ฐ์ง๊ณ ์ฒ๋ฆฌํ๊ณ size
๊ฐ ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ๊ฐ์ fill
๋ก ๋ํํ์ฌ ๋ธ๋ก๋์บ์คํธ์์ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ 0์ฐจ์ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
julia> fill("a")
0-dimensional Array{String,0}:
"a"
julia> fill([2])
0-dimensional Array{Array{Int64,1},0}:
[2]
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ค์นผ๋ผ๋ฅผ ์ปจํ ์ด๋๋ก ์ฒ๋ฆฌํ๋๋ก ์ ์ํ์๊ฒ ์ต๋๊น? ๋ณ๋ก ์ค์ฉ์ ์ด์ง๋ ์์ต๋๋ค.
iterable์ ์ง์ํ๊ฑฐ๋ ์ง์ํ ๋๊น์ง ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๋ฉด BroadcastStyle
์์ iterator๋ฅผ ์๋ณํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ๋๋ฌธ์, ๋ถ๊ฐ๋ฅ์ด Base.iteratorsize
๋ฐํ HasLength
๋ ๊ฐ์ ์ค์นผ๋ผ์ ๋ํ Symbol
. Base.isiterable
ํธ๋ ์(๋ค๋ฅธ ์ฉ๋๋ก ์ ์ฉํ ์ ์์)์ ๋์
ํ๊ฑฐ๋ Base.iteratorsize
๋ฅผ NotIterable
๊ธฐ๋ณธ ์ค์ ํ ์ ์์ต๋๋ค( HasLength
๋ฅผ ๊ฐ๋ ๊ฒ์ผ๋ก๋ ์๋ฏธ๊ฐ ์์ต๋๋ค
(ํฅํ ๋
ผ์๋ฅผ ์ํ ๊น๋ค๋ก์ด ์ฌ๋ก: UniformScaling
.)
@timholy broadcast
์ ์ฌ์ค๊ณ๋ฅผ ์๋ฃํ ํ ์ ์ ์ฌํญ์ด ์์ต๋๊น?
@JeffBezanson , broadcast
์์ ์ ์ปจํ
์ด๋์ ์ผ์นํ๋๋ก ์ค์นผ๋ผ๋ฅผ "๋ธ๋ก๋์บ์คํธ"ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค(์: ["bug", "cow", "house"] .* "s" ----> ["bugs", "cows", "houses"]
. ์ด๊ฒ์ map
์ ๋์๊ณผ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฆ
๋๋ค.
์ด๊ฒ์ด broadcast
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ค์นผ๋ผ๋ก ์ทจ๊ธํ์ฌ ์ปจํ
์ด๋์ ๊ฒฐํฉํ ์ ์๋ ์ด์ ์
๋๋ค. ์ธ์ํ ์ ์๋ ์ ํ์ ๋ํด ์ค๋ฅ๋ฅผ ๋์ง๋ฉด ํจ์ฌ ๋ ์ ์ฉํฉ๋๋ค.
์ ์ ํ ๋ฉ์๋๋ฅผ ์ ์ํ์ฌ ํน์ ์ ํ์ broadcast
์ ๋ํ ์ปจํ
์ด๋๋ก ์ ์ธํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ณ์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ด๋ จ์ด ์๋ PR(https://github.com/JuliaLang/julia/pull/25339)์์ @Keno ๋ applicable(start, (x,))
๋ฅผ ์ฌ์ฉํ์ฌ x
๊ฐ ๋ฐ๋ณต ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ๊ฒ์ ์ ์ํ์ต๋๋ค. ์ฌ๊ธฐ์๋ ๊ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํฉ๋๊น? ๋ฐ๋ณต์์ ๋ํ ๋ณด๋ค ๋ช
ํํ ์ ์( Base.iteratorsize
๋๋ ํน์ฑ ๊ธฐ๋ฐ)๋ฅผ ๊ฐ๋ ๊ฒ์ด ๋ ๋ช
ํํ์ง๋ง start
๊ฒ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก applicable(start, (x,))
์ธ ๋ช
์์ ํน์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
๊ฐ๋ฅํ ์๋ฃจ์ ๊ณผ ๋จ์ ์ ์ค๋ช ํ๊ธฐ ์ํด #25356์ ์ ์ถํ์ต๋๋ค.
@stevengj ์ ์์ ["bug", "cow", "house"] .* "s" ----> ["bugs", "cows", "houses"]
์์ ๋ฌธ์์ด์ ๋ฐ๋ณต ๊ฐ๋ฅํ์ง๋ง ์ค์นผ๋ผ์ฒ๋ผ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต ๊ฐ๋ฅ์ฑ์ด ์ถฉ๋ถํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์จ๋ ํน์ฑ์ ์ ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ๋ณต์์ ์๊ตฌ ์ฌํญ์ ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ธ๋ก๋์บ์คํธ์ ๋ํ ์ตํธ์ธ์ ๊ณ์ ์๊ตฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
๋คํํ keys(dict)
์ด์ ๋ฐํ AbstractSet
, ๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ๋ฐฉ์ก์ ํน์ฑ์ ์ถ๊ฐ ํ ๊ฒฝ์ฐ AbstractSet
๊ฐ ์์
์ด์ต์ ์์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์
๋๋ค. ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ํฌ์ฐฉํ๊ธฐ ์ํด Generator
๋ฅผ ๋ธ๋ก๋์บ์คํธํ๋ ์ค๋ฅ๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
AbstractSet
์ปจํ
์ด๋๋ฅผ ํตํ ๋ธ๋ก๋์บ์คํ
์ ๋ณธ์ง์ ์ผ๋ก ์ฝ๊ฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. AbstractSet
๋ฅผ ์ค์นผ๋ผ์ ๊ฒฐํฉํ ์ ์์ง๋ง ๋ฐ๋ณต ์์๊ฐ ์ธํธ์ ๋ํด ์ง์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ปจํ
์ด๋์๋ ๊ฒฐํฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ข
๋ฅ๋ "๋ธ๋ก๋์บ์คํธ" ์์
์ ์ผ๋ฐ์ ์ธ ์๋ฏธ๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค.
๋ค, PR์ ์ค๋นํ๋ฉด์ set์ด ๋ฐฉ์ก์ ์ง์ํด์ผ ํ๋ iterator์ ๊ฐ์ฅ ์ข์ ์๊ฐ ์๋๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. Generator
๋ฐ ProductIterator
๊ฒ์ ํจ์ฌ ๋ ํฅ๋ฏธ๋ก์ด ๊ฒฝ์ฐ์
๋๋ค.
์๋ง๋ ๋๋ต์ HasShape
๊ฐ ์๋ ๋ฐ๋ณต์๋ฅผ ๋ธ๋ก๋์บ์คํธํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ค์นผ๋ผ๋ก ๊ณ์ ์ฒ๋ฆฌํ๋ ๊ฒ์
๋๋ค. OP๋ฅผ ์์ ํ์ง๋ ์์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฝค ์ฐ์ํฉ๋๋ค.
๋ค๋ฅธ ์์์ ์ธ ์๊ฐ: ์๋ง๋ ํ๋์ ์ธ์๋ฅผ ํตํด ๋ธ๋ก๋์บ์คํ
ํ๋ ๊ฒ( string.(x)
)์ ๋ชจ์ ํธํ์ฑ์ด ๋ฌธ์ ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ map
์ฒ๋ผ ์๋ํ๋ ํน๋ณํ ๊ฒฝ์ฐ์ฌ์ผ ํฉ๋๋ค.
์๋ง๋ ๋๋ต์ HasShape๊ฐ ์๋ ๋ฐ๋ณต์๋ฅผ ๋ธ๋ก๋์บ์คํธํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ค์นผ๋ผ๋ก ๊ณ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๊น? OP๋ฅผ ์์ ํ์ง๋ ์์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฝค ์ฐ์ํฉ๋๋ค.
HasLength
๋ฐ๋ณต์๋ฅผ ์ ์ธํ ๊ฐ๋ ฅํ ์ด์ ๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํํ์ ํตํ ๋ธ๋ก๋์บ์คํ
์ ์ง์ํฉ๋๋ค( size
๊ตฌํํ์ง ์์). ๋ฐ๋ผ์ ํํ๊ฐ ์๋ ๋ฐ๋ณต์๋ฅผ ํํ๊ณผ ๊ฐ์ด ์ทจ๊ธํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์๋ฅผ ๋ค์ด, keys(::OrderedDict)
์ ํจ๊ป broadcast
keys(::OrderedDict)
์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฒฝํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ง์ํ์ง ์๋๋ค๋ฉด, ์ฌ๋๋ค์ broadcast
(๊ทธ๋ฆฌ๊ณ ์ข์ ์ ๊ตฌ๋ฌธ)๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ๋ณต์๋ฅผ HasShape
๋ก ์ ์ํ๊ณ ์ถ์ดํ ๊ฒ์
๋๋ค.
์คํฐ๋ธ์ ๋ง์ ์ธ์ฉํ์๋ฉด,
broadcast
๋ ๋ชจ์์ด ์๋ ์ปจํ ์ด๋์ฉ์ ๋๋ค.
HasShape
๋ ๊ทธ๊ฒ์ ๋ณด๋ค ์ ํํ๊ฒ ์ ์ํ๋ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฅผ ๋ค์ด ๋ฌธ์์ด์ ๋ํ ๋ธ๋ก๋์บ์คํธ ๋์์ ์ค๋จํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
ํํ์ ์ปจํ ์ด๋๋ก, ๋ฌธ์์ด์ ์ค์นผ๋ผ๋ก ๊ฐ์ฃผํ๋ ๋ฑ ์ด๋ฏธ ๋ถ์ผ์น๊ฐ ์์ต๋๋ค. ์ด์จ๋ ๋ฌธ์์ด์ ๋งค์ฐ ํน๋ณํฉ๋๋ค. ์ ๋ ๊ทธ๋ค์ ํ๋์ด ๋ชจ์์ด ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์คํ๋ ค ๋ฌธ์์ด์ด ์ปจํ ์ด๋๋ณด๋ค ์ค์นผ๋ผ๋ก ๋ ์์ฃผ ๊ฐ์ฃผ๋๋ ์ ์ผํ ์ปฌ๋ ์ ์ด๋ผ๋ ์ฌ์ค๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
@stevengj ๋ broadcast
๊ฐ ๋ชจ์์ด ์๋ ์ปจํ
์ด๋๋ง ์ง์ํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ์ด์ ๋ฅผ ๊ฐ๋ฐํ ์ ์์๊น์? ํํ๋ ์ค์นผ๋ผ๋ก ๊ฐ์ฃผํ๋ ๊ฒ์ ์ง์งํ์๊ฒ ์ต๋๊น?
broadcast
(#16986)์์ ํํ์ ์ปจํ
์ด๋๋ก ์ทจ๊ธํ๋ ๊ทผ๊ฑฐ๋ ์ค์ ๋ก๋ ์ข
์ข
๋ณธ์ง์ ์ผ๋ก ์ ์ ๋ฒกํฐ๋ก ์ฌ์ฉ๋๋ฉฐ broadcast
์์ "์ค์นผ๋ผ"๋ก ์ทจ๊ธํ๋ ๊ฒ์ ์ด์จ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋์กฐ์ ์ผ๋ก ๋ฌธ์์ด (a)๋ ๋ฌธ์์ด ์ฒ๋ฆฌ ์์
์์ "์์"๋ก ์ทจ๊ธ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ (b) ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ ์ธ๋ฑ์ฑ์ด ์์ผ๋ฏ๋ก broadcast
ํ๋ ์์ํฌ์ ๋งค์ฐ ์ ํฉํ์ง ์์ต๋๋ค.
์์น์ ์ผ๋ก broadcast
์์ ์ปจํ
์ด๋๋ก ์ฌ์ฉ๋๋ HasShape
๋ฐ๋ณต์๋ฅผ ์ง์ํฉ๋๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด ์ฃผ์ ๋ฌธ์ ๋ HasShape
๊ฐ ์๋ค๊ณ ํด์ getindex
์๋ํ๋ค๋ ๋ณด์ฅ์ด ์๋ค๋ ๊ฒ์
๋๋ค.
์์์ ์ธ๊ธํ๋ฏ์ด ์ฃผ์ ๋ฌธ์ ๋ HasShape๊ฐ ์๋ค๊ณ ํด์ getindex๊ฐ ์๋ํ๋ค๋ ๊ฒ์ ๋ณด์ฅํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
#22489์ ๊ฐ์ ๊ฒ์ด ๋์์ด ๋ ๊น์? ์ฆ, ๋ฐ๋ณต์๊ฐ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ฐ๋ณต์ ํน์ฑ์ด ์์ต๋๊น?
#22489์ ๊ฐ์ ๊ฒ์ด ๋์์ด ๋ ๊น์? ์ฆ, ๋ฐ๋ณต์๊ฐ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ฐ๋ณต์ ํน์ฑ์ด ์์ต๋๊น?
๊ทธ๋ฌ๋ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ๋ฐ๋ณต์๋ง broadcast
๋ฉ๋๊น? ๋ชจ๋ iterable(์: keys(::OrderedDict)
์ ๊ฒฐ๊ณผ)์ ๋ํด string.(itr, "1")
์ ๊ฐ์ ์์
์ ์ํํ ์ ์๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๊ณ ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ธ๋ฑ์ฑ์ด ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ฌด ์ ํ์ ์ผ๋ก ๋ค๋ฆฝ๋๋ค. 0.7/1.0์์ ์ธ๋ฑ์ฑ์ ์ง์ํ์ง ์๋ ๋ชจ๋ ๋ฐ๋ณต์์ ๋ํด ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ณ ํ์ ๋ฆด๋ฆฌ์ค์์ ์ง์ํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด์จ๋ ๋ฐ๋ณต์๋ฅผ ์ค์นผ๋ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ๋ณ๋ก ์ ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ 1.x ๋ฆด๋ฆฌ์ค์์ ์ํ๋ ๋ชจ๋ ๋์์ ๊ตฌํํ ์ ์์ต๋๋ค.
@stevengj ๋ฌธ์์ด๊ณผ ํํ์ ๊ดํ ๋น์ ์ ์ฃผ์ฅ์ ๋์ํ์ง๋ง, ์ HasLength
๋ฐ๋ณต์๋ฅผ ํํ๋ก ์ทจ๊ธํด์๋ ์ ๋ฉ๋๊น? ๋๋ ์ง๊ธ๊น์ง ์ด์ ๋ํ ๊ทผ๊ฑฐ๋ฅผ ์ฝ์ง ๋ชปํ๋ค.
@nalimilan , indexable+hasshape ๋ฐ๋ณต์๋ง broadcast
์ง์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ด ํจ์์ ์ผ๋ฐ ๋ฐ๋ณต์๋ฅผ ์ง์ด๋ฃ๋ ๊ฒ์ ๊ทธ ์๋ฏธ๋ฅผ ๋๋ฌด ๋ง์ด ํผ๋ํฉ๋๋ค. ์ด๋ ์์ ์์๋ map
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ชจ๋ iterable์ ๋ํด
string.(itr, "1")
์์ ์ ์ํํ ์ ์๋ค๋ฉด ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค ... ์ด์จ๋ iterator๋ฅผ ์ค์นผ๋ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ต๋๋ค.
๋ฌธ์์ด์ ๊ฒฝ์ฐ๋ ์ด์ ๋ชจ์๋ฉ๋๋ค. "1"
์ธ์ ์์ฒด๋ ์์ ์์ ๋ฐ๋ณต ๊ฐ๋ฅํฉ๋๋ค. ์ฌ๋ฌผ์ ํค์ ๋ฐ๋ณต์์
๋๋ค (์ : PyObject
PyCall์์์ ์ ์ start
๋ฑ)์ ์ ๋ ฌ๋์ง ์์ ์ธํธ ๊ฐ์ ๊ฒ๋ค์ ํฌํจ, broadcast
๊ฐ๋
์ ์ ๋ง ๋๋ฉ๋๋ค.
๋ํ #24990 ์ map
์ง๊ธ๋ณด๋ค ํจ์ฌ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ์๋ฅผ ๋ค์ด map(string(_,"1"), itr)
์์ต๋๋ค.
@nalimilan , ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ + ํด์ ๋ชจ์ ๋ฐ๋ณต์๋ง ๋ธ๋ก๋์บ์คํธ์์ ์ง์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฐ๋ณต์๋ฅผ ์ด ํจ์์ ์ง์ด๋ฃ๋ ๊ฒ์ ๊ทธ ์๋ฏธ๋ฅผ ๋๋ฌด ๋ง์ด ํผ๋ํฉ๋๋ค. ์ด๋ ์์ ์์๋ map์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ์ฌ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ๋ฐ๋ณต์์ ๋ํ ํน์ฑ์ด ์์ต๋๋ค. ์ด๋ป๊ฒ ๊ฑด๋ค์ฃผ์๊ฒ ์ต๋๊น? ๋ด WIP PR #25356์ ์ธ๋ฑ์ฑ์ ์ง์ํ์ง ์๋ ๋ฐ๋ณต์์ ๋ํด ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. ๋ฐ๋ณต์๋ฅผ ์ค์นผ๋ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ด ๊ทธ๋ค์ง ์ ์ฉํ์ง ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ๊ทธ๋ ๊ฒ ๋์์ง๋ ์์ต๋๋ค. ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ค๋ฅธ ํน์ฑ์ด ํ์ํ์ง ์์ต๋๊น?
๋๋ ์์ ํ ๋ช
ํํ์ง ์์ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋์ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ ๊ธฐ๋ณธ ๋์(์: ์ผ๋ถ ๋ฐ๋ณต์๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌ)์ ๊ฐ๋๊ธฐ๋ณด๋ค๋ ๋ฏธ๋์ ๋ชจ๋ ๋์์ ๊ตฌํํ ์ ์์ต๋๋ค. . ์ด ๋ฌธ์ ์์ ์ ์ ์๋ฏ์ด broadcast
์ ๋์์ ์ฌ๋ฐ๋ฅด๊ฒ ๋์์ธํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
(FWIW, PyObject
๋ IIUC๊ฐ Python ๋ฐ๋ณต์๋ฅผ ๋ํํ ์ง ์ฌ๋ถ๋ฅผ ๋ฏธ๋ฆฌ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต ํ๋กํ ์ฝ์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋์๊ฒ ์ข์ ์์ฒ๋ผ ๋ค๋ฆฌ์ง ์์ต๋๋ค. PyObject
๋ getfield
์ค๋ฒ๋ก๋ฉ์ ์ฌ์ฉํ์ฌ ํ์ค Julia ๊ฐ์ฒด์ฒ๋ผ ๋ณด์ด๊ฒ ํด์ผ ํ๋ ๊ฒ์ฒ๋ผ ์ฌ๊ธฐ์์ ๋ถ๋ช
ํ ์์ธ์
๋๋ค. Sets๋ ์ข ๋ Julian ์์ ์
๋๋ค.)
๋ค๋ฅธ ๊ณณ์์ ์ ์๋ ๊ฒ์ฒ๋ผ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ HasShape
๋ฐ๋ณต์์ ๋ํ ํน์ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
Triage๋ ๋ธ๋ก๋์บ์คํธ๊ฐ ๋ชจ๋ ์ธ์(์: map)์ ๋ํด ๋ฐ๋ณตํ๋๋ก ํ๊ณ ์ฐ์ฐ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค(์: ๋ค๋ฅธ ๋ฌธ์ ์์ ์ด์ ์ ์ ์๋ ๋๋ก const & = Ref
๋๋ ~
). 0์ฐจ์ ์ธ์.
@vtjnash , HasShape
๊ฐ ์๋ ๋ฐ๋ณต์์ ๋ํด์๋ ์ด๊ฒ์ด ๋ฌด์์ ์๋ฏธํฉ๋๊น? ๋ธ๋ก๋์บ์คํธ๊ฐ ๋ฌธ์์ด ๋ฐ ์งํฉ๊ณผ ๊ฐ์ ํญ๋ชฉ์ ๋ฐ๋ณตํ๊ธฐ๋ฅผ ์ํ๋ค๋ ๋ป์
๋๊น? ํ์ฌ broadcast
๊ตฌํ์ getindex
์ ๋ฐ์ ํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค ... ํนํ ๋ค๋ฅธ ์ฐจ์์ ์ธ์๋ฅผ ๊ฒฐํฉํ ๋ getindex
์์ด ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด ๋ณด์
จ์ต๋๊น?
์ด๋ก ์ ์ผ๋ก ์ธ๋ฑ์ฑํ ์ ์๋ ๋ฐ๋ณต์(์ ์ด๋ ์๋ฏธ ์๋ ์์๊ฐ ์๋ ๋ฐ๋ณต์)๋ฅผ ์ง์ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๋ชจ๋ ์ ๋ ฅ์ ๋ชจ์์ด ๊ฐ์ผ๋ฉด ์ฝ์ต๋๋ค. ๋ชจ์์ด ๋ค๋ฅด๊ณ ๋ฐ๋ณต์์ ๋ชจ์์ด ๊ฒฐ๊ณผ์ ๋ค๋ฅด๋ฉด(์์) ์ค๊ฐ ์ ์ฅ์๊ฐ ํ์ํฉ๋๋ค.
PR https://github.com/JuliaLang/julia/pull/22489 ์ IteratorAccess
ํน์ฑ์ ์กฐ์ /์ฌ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ๋ฐ๋ณต์๋ฅผ ๊ฐ์งํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. https://github.com/JuliaLang/julia/pull/24774 ์์๋ ์ด๋ค ๋ฐ๋ณต์๊ฐ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ์ง(๋ฐ๋ผ์ keys
๊ตฌํํด์ผ ํจ) ์๊ณ ์์ด์ผ ํฉ๋๋ค .
์ฐธ์กฐ: @rfourquet
๐ Triage๋ ์ด๊ฒ์ ์ค๋ฅ๋ก ๋ง๋ค๊ฑฐ๋(์์ ํ ์ ํ) ์์ง์ ํธ์ถ(ํ๊ธฐ ์ฌ์ด ๊ฒฝ์ฐ)ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ ๋ณ ์ฌ์ฌ์์ ์ฌ๊ธฐ์์ ์ฑํํ ํน์ ์ ๋ต์ ๊ฒฐ์ ํ ์ ์์ต๋๊น? ์๋ฅผ ๋ค์ด ์์ @JeffBezanson ์ ์๊ฒฌ์์ "์ด๊ฒ"์ ๋ฌด์์
๋๊น? ์ธ๋ฑ์ฑ์ ์ง์ํ์ง ์๋ ๋ชจ๋ ๋ฐ๋ณต์์ ๋ํด ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ์ผ ํ ๊น์(๋์ค์ ์ํ๋ ๋ชจ๋ ์์
์ ์ํํ ์ ์๋๋ก ํ์ฌ๋ก์๋ ๊ฐ์ฅ ์์ ํ ์ ํ), ์๋๋ฉด ์ผ๋ถ ๋ฐ๋ณต์๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํด์ผ ํ ๊น์? ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ๋ฐ๋ณต์๋ฅผ ์ํ ํน์ฑ์ ์ถ๊ฐํด์ผ ํฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ํ์์ผ๋ก ์ถ๊ฐํด์ผ ํฉ๋๊น( Base.IteratorSize
๋ํ ์ ํน์ฑ ๋ ์ ์ ํ)? (์ค์นผ๋ผ์ ๊ตฌ๋ณํ ์ ์๋๋ก) ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋ณต์์ ๋ํ ํน์ฑ์ ์ถ๊ฐํด์ผ ํฉ๋๊น?
๋ค์ ๋์์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
Ref(x)
๋๋ [x]
๋ฅผ ์ ๋ฌํ์ฌ x
๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋๋ก ํฉ๋๋ค.๋ง์ง๋ง ์์ ์ ๋ํ ๋ฉ๋ชจ๋ฅผ ๋ช ํํ ํด์ฃผ์ค ์ ์์ต๋๊น(์๋ฅผ ๋ค์ด)? ๋๋ ํน์ฑ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ฐ๋ณตํ๊ฑฐ๋ ๋ฐ๋ณตํ์ง ์๋ ๊ฒ ์ฌ์ด์์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก "๋ชจ๋ ์ธ์๋ฅผ ๋ฐ๋ณตํ๊ณ ๋ธ๋ก๋์บ์คํธํ๋ ค๊ณ "๋ ๋ชจ๋ ๋น ์ปฌ๋ ์
์ ํ(ํนํ Number
, Symbol
๋ํด Scalar()
๋ฅผ ๋ฐํํ๋๋ก BroadcastStyle
๋ฅผ ์ ์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค Scalar()
Symbol
๋ฐ AbstractString
)? ๊ทธ๊ฒ์ ๋ง์ง๋ง ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๊ฐ ์ธ๊ธํ "ํน์ฑ"์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
์์งํ ๋งํ๋ฉด, ๋น์ธํฐ๋ฌ๋ธ/์ค์นผ๋ผ์ ๋ํ ํธ๋ ์์ ์ ์ํ๋ ๊ฒ๋ณด๋ค ์ดํฐ๋ฌ๋ธ์ ๋ํ ํธ๋ ์์ ์ ์ํ๋ ๊ฒ์ด ๋น์ฉ์ด ๋ ๋ ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์
๋๋ค. ์ผ๋ถ(๋๋ฌธ ๊ฒฝ์ฐ) ๊ฒฝ์ฐ์ ์ ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋น ์ปฌ๋ ์
์ ํ์ด ์ด๋ ์์ ์์ ๊ทธ Scalar
ํน์ฑ์ ๊ตฌํํ์ง ์์๊น ๊ฑฑ์ ๋ฉ๋๋ค.
๋ง์ง๋ง ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๊ฐ ์ธ๊ธํ "ํน์ฑ"์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
์๋์, ๋ง์ง๋ง ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๋ ๋ฌด์ธ๊ฐ๊ฐ ๋ฐ๋ณต์ ๊ตฌํํ๋ฉด ๋ธ๋ก๋์บ์คํธ๊ฐ ๋ฐ๋ณตํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ค์นผ๋ผ ํน์ฑ์ด ์ฌ๋ผ์ง๋๋ค. ๋ถ๋ช
ํ ๋ฐ๋ณตํ ์ ์๋ ๋ช ๊ฐ์ง ์ ํ(์: Type
๋ฐ Function
ํ์ ์ ํ)์ ๊ฒฝ์ฐ Type
์ ๋ณ๊ฒฝํ๋ NotIterable
ํธ๋ ์์ ์ํ ์ ์์ต๋๋ค MethodError
๋ฅผ ํ๋์ ๊ฐ(ํด๋น ๊ฐ์ฒด)์ ์์ฑํ๋ ๋ฐ๋ณต์ ๋ฃ์ต๋๋ค. ์ฌ์ค ์ด๊ฒ ์ ํ์ํ๋์ง ๊ธฐ์ต์ด ์๋๋ค.
๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก "๋ชจ๋ ์ธ์๋ฅผ ๋ฐ๋ณตํ๊ณ ๋ธ๋ก๋์บ์คํธํ๋ ค๊ณ ์๋"ํ๋ค๋ ๊ฒ์ ๋ชจ๋ ๋น ์ปฌ๋ ์ ์ ํ(ํนํ Number, Symbol ๋ฐ AbstractString)์ ๋ํด Scalar()๋ฅผ ๋ฐํํ๋๋ก BroadcastStyle์ ์ ์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ง์ง๋ง ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๊ฐ ์ธ๊ธํ "ํน์ฑ"์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
์๋์, Number
์ ๋ชจ๋ ์ค์นผ๋ผ ํ์ ์ ํ์ ์์ฒด์ ์ผ๋ก ๋ฐ๋ณต๋๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค. ๊ธฐํธ์ ๋ํด ์ ์ํด์ผ ํฉ๋๋ค. AbstractString
๋ ์ปฌ๋ ์
์ผ๋ก ์๋ํฉ๋๋ค.
๋๋ ์ค์นผ๋ผ๋ก ์ทจ๊ธ๋๋ ์ ํ์ ๋ํ ๋ฉ์๋๋ฅผ ์ ์ํด์ผ ํ๋ ๋์์ธ์ ์ซ์ดํฉ๋๋ค. ๊ทธ๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ด์ด์ผ ํฉ๋๋ค. ๋ํ ๋ฌธ์์ด์ ๋ธ๋ก๋์บ์คํธ์ฉ ์ปจํ ์ด๋๋ก ์ทจ๊ธํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ฌ์ ํ ๋ธ๋ก๋์บ์คํธ๊ฐ HasShape ๋ฐ๋ณต์๋ฅผ ์ปจํ ์ด๋๋ก ์ทจ๊ธํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ์ฒ์๋ถํฐ ๋ฐฉ์ก์ ๋์์ธ๊ณผ ์ผ์นํฉ๋๋ค. ๊ทธ๊ฒ ๋ฌด์จ ๋ฌธ์ ์ผ?
๊ทธ ๋ฌธ์ ๋ OP์ ๋ฌธ์ ์ ๋๋ค. ๋ชจ์์ด ์๋ ๋ฐ๋ณต์๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๋ฏธ์น ๋ต์ ์ป์ ์ ์์ต๋๋ค.
๋ํ ์ ์์ "ํน์ฑ" ๋ถ๋ถ์ ์ญ์ ํ๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค. ์๋ฌด๋ ๋ถํํ์ง ์๋๋ค
julia> map(string, [1,2], :a)
ERROR: MethodError: no method matching start(::Symbol)
ํ๋ฆผ์์ด OP์ ๊ฒฐ๊ณผ๊ฐ ์์์น ๋ชปํ ์ด์ ๋ ์๋ฌด๋ ์ค์ ๋ก _all_ ์ธ์๋ฅผ ์ค์นผ๋ผ๋ก ์ทจ๊ธํ๊ธฐ ์ํด ๋ธ๋ก๋์บ์คํธ ํธ์ถ์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋จ ํ๋์ ์ธ์๋ง ์๊ณ ์ฌ์ฉ์๊ฐ ์๋ํ๋ ๋ฐ๊ฐ ๊ฑฐ์ ํ์คํ ์ปฌ๋ ์
/๋ฐ๋ณต์๋ก ์ทจ๊ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ. ๋ฌผ๋ก 1 .+ 1
๋ ๊ณ์ ์๋ํด์ผ ํฉ๋๊น?
๊ทธ๊ฒ์ด ๋์๊ฒ ์ผ์ด๋ฌ์ง๋ง, ํ๋์ ์ฃผ์ฅ์ ํน๋ณํ ๊ฒฝ์ฐ๋ก ๋ง๋๋ ๊ฒ์ ํผ๋์ค๋ฌ์ด ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์ ๋น๋์นญ์ด ๋ณด์ ๋๋ค. iterable์ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ฉด ์ ๋ง ์ด์ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง ์ค์นผ๋ผ๋ฅผ iterable๋ก ์ฒ๋ฆฌํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์๋ฅผ ๋ํํ์ฌ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ์ธ์๋ฅผ ๋ฐ๋ณตํ๊ธฐ ์ํด ์ํํ ์ ์๋ ๊ฐ๋จํ ์์ ์ด ์์ต๋๋ค.
๋๋ ์ฌ์ ํ ๋ธ๋ก๋์บ์คํธ๊ฐ HasShape ๋ฐ๋ณต์๋ฅผ ์ปจํ ์ด๋๋ก ์ทจ๊ธํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ์ฒ์๋ถํฐ ๋ฐฉ์ก์ ๋์์ธ๊ณผ ์ผ์นํฉ๋๋ค. ๊ทธ๊ฒ ๋ฌด์จ ๋ฌธ์ ์ผ?
@stevengj IMHO์ ์๋ชป๋ ์ ์ ์๋ฒฝํ๊ฒ ํฉ๋ฆฌ์ ์ธ ๋์์ด ๊ตฌํ๋ ์ ์์ ๋ ์ผ๋ถ ์์
์ด ์๋ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. HasLength
๋ฐ๋ณต์๋ฅผ Tuple
์ฒ๋ผ ์ฒ๋ฆฌํ์ญ์์ค. ์ง๊ธ ๋น์ฅ์ ์ง์ํ์ง ์๋๋ผ๋ 1.x์ ์ด๋ ์์ ์์ ์ง์ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ด์ด๋๊ณ ์ถ์ต๋๋ค.
์๋ฌด๋ ๋ถํํ์ง ์๋๋ค
์ค๋ฆฌ์> ๋งต(๋ฌธ์์ด, [1,2], :a)
์ค๋ฅ: MethodError: start(::Symbol)์ ์ผ์นํ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค.
@JeffBezanson OTC, ์ ๋ :a
๋ฅผ ํ์์ ๋ฐ๋ผ ๋ฐ๋ณตํ๋ broadcast
์ ํ์ฌ ๋์์ ์ง์ํฉ๋๋ค. ์ด๋ฌํ ์ข
๋ฅ์ ๊ฒ์ ์๋ฅผ ๋ค์ด ์ผ๋ จ์ DataFrame
์ด์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. map
์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ก broadcast
๋ฅผ ๋ณ๊ฒฝํ์๊ฒ ์ต๋๊น?
๋ค์ ๋น๋์นญ์ด ๋ณด์ ๋๋ค. iterable์ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ฉด ์ ๋ง ์ด์ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง ์ค์นผ๋ผ๋ฅผ iterable๋ก ์ฒ๋ฆฌํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์๋ฅผ ๋ํํ์ฌ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ์ธ์๋ฅผ ๋ฐ๋ณตํ๊ธฐ ์ํด ์ํํ ์ ์๋ ๊ฐ๋จํ ์์ ์ด ์์ต๋๋ค.
์ฝ์ง๋ง ์๋นํ ๋ถํธํฉ๋๋ค. ์ค์นผ๋ผ๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ก๋์บ์คํธ๋์ด์ผ ํ๋ค๋ @stevengj์ ์๊ฒฌ์ ๋์ํฉ๋๋ค. ๋ฌผ๋ก Number
์ ํ์ด ๋ฐ๋ณต ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฑ๊ฐ์ฌ์ ํญ์ ํ์๋์ง๋ ์์ง๋ง Symbol
์์ ์์ ์ ์ ์๋ฏ์ด ์ผ๋ฐ์ ์ผ๋ก ๋ณ๋ก ๋์์ด ๋์ง ์์ต๋๋ค. Char
์ด ๊ณ ์ํฉ๋๋ค ํจํค์ง์ ์ ์ ๋ ๋ค๋ฅธ ๋ง์ ์ฌ์ฉ์ ์ ์ ํ์์ด ๋ ๊ฒ์ด๋ค (๊ทธ๋ฆฌ๊ณ ์ ์ ๊ฒฐ๊ตญ ์์ ์ BroadcastStyle
๋ก Scalar()
).
๋ฌธ์ ์ ํต์ฌ์ ์ปฌ๋ ์
๊ณผ ์ค์นผ๋ผ๋ฅผ ๊ตฌ๋ณํ๋ ํน์ฑ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ์ง์ ์ ์ธ ํด๊ฒฐ์ฑ
์ ์ค์ ๋ก HasShape
๋ฐ๋ณต์๋ฅผ ์ปฌ๋ ์
์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ค๋ฅธ ์ ํ์ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์
๋๋ค(๋ชจ๋ ์ ํ์ ๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก HasLength
๋ฐ๋ณต์๋ฅผ ํฌํจ). ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ปฌ๋ ์
/์ดํฐ๋ฌ๋ธ์ ๋ํ ํน์ฑ์ ๋์
ํ๋ ๊ฒ์ด ๋ง์ ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํ์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ ๊ฒ ํ ์ค๋น๊ฐ ๋์ง ์์๊ณ ์ดํฐ๋ฌ๋ธ์ ๊ฐ์งํ๊ธฐ ์ํด ์ ์๋ start
์ ์์กดํ ์ ์๋ค๋ฉด ์ ๋ ํ์ฌ์ ํ๋์ ์ ์งํด์ผ ํ ๊น๋ด ๋๋ ต์ต๋๋ค.
https://github.com/JuliaLang/julia/issues/18618#issuecomment -360594955์ ์๋ Jeff์ ์ ์์๋ Symbol
๋ฐ Char
๋ฅผ "์ค์นผ๋ผ" ์ ํ์ผ๋ก ์ทจ๊ธํ๋ ๋ธ๋ก๋์บ์คํธ๋ฅผ ํ์ฉํ ์ฌ์ง๊ฐ ์์ต๋๋ค. ํ๋์ ๋์ํด์ผ ํฉ๋๋ค. start
๊ตฌํํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค๋๋ ฅ ์๋ ๋ถ๋ถ์ "์ปฌ๋ ์ " ์ ํ์ ๋ํ ์ ์ผํ ํฉ๋ฆฌ์ ์ธ ์ ์๋ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋๋ค. ์, ๋ฌธ์์ด์ด ์ปฌ๋ ์ ์์ ์๋ฏธํฉ๋๋ค. ๋๋๋ก ๊ทธ๋ค์ ๊ทธ๋ ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค! ๋ฐ๋ผ์ ์ฌ๋๋ค์ด ํธ์ถ ์ฌ์ดํธ์์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ฝ๊ฒ ์ตํธ์ธํ ์ ์๋๋ก ํ๋ ๋์์ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ํด ๋ณด๊ฒ ์ต๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ฌ๋ง๊ท๊ฐ ์์ต๋๋ค. ์ซ์๋ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ฏ๋ก( HasShape
) 0์ฐจ์ ์ปจํ
์ด๋๋ก ์ทจ๊ธ๋ฉ๋๋ค. ์ฆ, ๋
ผ๋ฆฌ์ ๊ฒฐ๋ก ์ ๋ฐ๋ฅด๋ฉด 1 .+ 2 != 3
์
๋๋ค. ๋์ fill(3, ())
์
๋๋ค.
ํธ์ง: ์ค๋ ๋๊ฐ ๋ ์ด์ ํ์ ํ์ง ์๋๋ก ํ๊ธฐ ์ํด ๋ด๋ก ์ผ๋ก ์ด๋:
#18618(comment)์ ์๋ Jeff์ ์ ์์๋ Symbol ๋ฐ Char๋ฅผ "์ค์นผ๋ผ" ์ ํ์ผ๋ก ์ทจ๊ธํ๋ ๋ธ๋ก๋์บ์คํธ๋ฅผ ํ์ฉํ ์ฌ์ง๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ ๊ตฌํํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฉ๋๋ค.
๋ค, ์ ์ ์ฅ์ ์ค์นผ๋ผ๊ฐ ๋ ์์ฐ์ค๋ฌ์ด ํด๋ฐฑ์ด๋ผ๋ ๊ฐ์ ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค. ํนํ ์ปฌ๋ ์ ์ ์ผ๋ถ ๋ฉ์๋(๋ฐ๋ณต, ์ธ๋ฑ์ฑ)๋ฅผ ๊ตฌํํด์ผ ํ๋ ๋ฐ๋ฉด ์ค์นผ๋ผ๋ "๋๋จธ์ง"์ด๊ณ ๊ณตํต์ ์ด ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๊ฒฐ๊ตญ ๋ชจ๋ ์ ํ์ ์ํ๋ ๋ชจ๋ ๋์์ ๊ตฌํํ ์ ์์ง๋ง ๊ฐ๋ฅํ ํ ํธ๋ฆฌํ๊ณ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ด๋ ํนํ ๋ถ์ผ์น๋ฅผ ํผํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค(์: ์ผ๋ถ ์ ํ์ ์ ์ธ๋๊ณ ์ค์นผ๋ผ๋ก ์๋ํ๊ณ ๋ค๋ฅธ ์ ํ์ ๊ทธ๋ ์ง ์์).
๋ค๋ฅธ ์ ํ์ ๋ํ ๊ท์น์ด ๋ช ํํ๋ค๋ฉด ๋ฌธ์์ด ๋ฐ ์ซ์์ ๊ฐ์ ํ์ ์ ํ์ ๋ํ ๋ช ๊ฐ์ง ์์ธ๊ฐ ์๋ ๊ฒ์ ๋ํด ์ง๋์น๊ฒ ๊ฑฑ์ ํ์ง ์์ต๋๋ค.
์ ๋ ์ฐ๋ฆฌ์ ๋ฐ๋ณต ๋ฐ ์ธ๋ฑ์ฑ ์ธํฐํ์ด์ค์ ๋ํด ์กฐ๊ธ ์๊ฐํ์ต๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ณตํ๋(ํ์ง๋ง ์ธ๋ฑ์ฑํ ์๋ ์๋) ์ ์ฉํ ๊ฐ์ฒด, ์ธ๋ฑ์ฑ๋ ์ ์๋(๊ทธ๋ฌ๋ ๋ฐ๋ณตํ ์ ์๋) ๊ฐ์ฒด, ๊ทธ๋ฆฌ๊ณ ๋ ๋ค ์ํํ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ์ ์ ์ฃผ๋ชฉํฉ๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ ์ฌํญ์ด ๊ถ๊ธํฉ๋๋ค.
map
๊ฐํ๊ฒ ๋ฐ๋ณต ํ๋กํ ์ฝ์ ๋ฌถ์ฌ ์ ์์ต๋๋ค - ์ฐ๋ฆฌ๊ฐ ๊ฒ์ผ๋ฅธ ํ ์์๋ ์ ํจํ ๊ฒ out = map(f, iterable)
์ ๋ํ ์์์ iterable
์๋ ๊ทธ๋ฐ๋ฅผ first(out)
๋ IS f(first(iterable))
์ ๊ฐ์ผ๋ฉฐ ์ด ์ผ๋ฐ์ ์ธ ๊ฒ์ผ๋ฅธ ์์
์ด ์ ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.broadcast
๋ ์ธ๋ฑ์ฑ ์ธํฐํ์ด์ค์ ๊ฐ๋ ฅํ๊ฒ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค. out[i]
๊ฐ f(indexable[i])
์ ๊ฐ๋๋ก ๊ฒ์ผ๋ฅธ out = broadcast(f, indexable)
๋ง๋ค ์ ์๋ ๊ฒ์ด ํ๋นํด ๋ณด์
๋๋ค. ์ด ์ผ๋ฐ์ ์ธ ๊ฒ์ผ๋ฅธ ์์
์ด ์ ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ถ๋ช
ํ ์ฌ๋ฌ ์
๋ ฅ์ด ์๋ broadcast
๋ ์ฌ์ ํ ํ์ฌ ํ๋ ๋ชจ๋ ๋ฉ์ง ์ผ์ ํ ์ ์์ต๋๋ค. ๋ธ๋ก๋์บ์คํ
์ ์ํด ์ค์นผ๋ผ๋ ์ธ๋ฑ์ฑํ ์ ์๋ ๊ฒ์
๋๋ค(๋๋ Number
๋ฐ Ref
๋ฐ AbstractArray{0}
์ ๊ฐ์ด ์ฌ์ํ ์ธ๋ฑ์ฑ).๋ํ ๋จ์ผ ์ธ์ map
๋ฐ ๋จ์ผ ์ธ์ broadcast
๊ฐ ๋ฐ๋ณต ๊ฐ๋ฅํ๊ณ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ์ปฌ๋ ์
์ ๋ํด ๋งค์ฐ ์ ์ฌํ ์์
์ ์ํํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ AbstractDict
๋ฐ๋ณต์ด getindex
์ ๋ค๋ฅธ ๊ฒ์ ๋ฐํํ๋ค๋ ์ฌ์ค์ ์ฌ๊ธฐ์ ์ข์ ํตํฉ์ ๋ฐฉํดํ๋ ๊ฒ ๊ฐ์ต๋๋ค. :frowning_face: (์ฐ๋ฆฌ์ ๋ค๋ฅธ ์ปฌ๋ ์
์ ํ์ ๊ด์ฐฎ์ ๋ณด์
๋๋ค)
(๋์๊ฒ ๋ฌธ์์ด๊ณผ ๊ฐ์ ๊ฒ์ด ["bug", "cow", "house"] .* ("s",)
์ฒ๋ผ ๋ช
์์ ์ผ๋ก ๋ํ๋์ด์ผ ํ๋ค๋ ์ฌ์ค์ ์ฌ๊ธฐ์ ๊ฑฐ๋ ์ฐจ๋จ๊ธฐ์ฒ๋ผ ๋ค๋ฆฌ์ง ์์ต๋๋ค. 3-๋ฒกํฐ๋ฅผ ์๊ฐํ๊ณ ์ถ์ ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. "๋จ์ผ 3D ํฌ์ธํธ"์ด๋ฏ๋ก ๋ค๋ฃจ๊ธฐ ์ด๋ ต์ง ์์ต๋๋ค(xref #18379)).
broadcast
๋ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ์ปจํ
์ด๋์ฉ์ด์ด์ผ ํ๋ค๋ ๋ฐ ๋์ํ์ง๋ง ๋ฌธ์์ด์ ์ ์ธํ๊ณ ์ฐ์์ ์ผ๋ก ์ธ๋ฑ์ฑํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด collect(eachindex("aฮฑb๐จฮณz"))
๋ [1, 2, 4, 5, 9, 11]
. ์ด๋ ์ธ๋ฑ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ชจ๋ broadcast
๊ตฌํ์์ ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ธ๋ฑ์ฑ ๊ฐ๋ฅํ ์ปจํ ์ด๋์ ๋ํ ๊ฒ์ ๋ณธ์ง์ ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์ตํธ์ธํ๋ ํน์ฑ์ด ํ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ฐ ์นํธํด ์จ ๊ฒ์ ๋๋ค.
์ฐ์ ์ธ๋ฑ์ค ๊ฐ ์ข์ ์ ์ฝ ์กฐ๊ฑด์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ ์๋ ์์์ ์ธ๋ฑ์ค๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ broadcast(f, ::String)
๋ ์ String
์์ฑํ ์ ์์ผ๋ฉฐ UTF-8 ๋ฌธ์ ๋๋น๊ฐ f
( ๊ทธ ๋ณด์ฆ์ ํ๋ ค๋ฉด AbstractDict{Int, Char}
์ ๊ฐ์ ๊ฒ์ผ๋ก ๋ฐ๋์ด์ผ ํฉ๋๋ค. ์ค์ ๋ก๋ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค!). String
์ธ๋ฑ์ค๋ ์๋ฏธ์ ์ค์ํ ์ธ๋ฑ์ค๊ฐ ์๋๋ผ ๋น ๋ฅธ ์กฐํ๋ฅผ ์ํ "ํ ํฐ"๊ณผ ๋น์ทํ๋ค๊ณ ๊ฑฐ์ ๋งํ ์ ์์ต๋๋ค(์: ๋๋ฑํ UTF-32 ๋ฌธ์์ด๋ก ๋ณํํ ์ ์์ผ๋ฉฐ ์ธ๋ฑ์ค๊ฐ ๋ณ๊ฒฝ๋จ).
ํธ๋ ์์ ํตํด ๋ธ๋ก๋์บ์คํ
๋์์ ์ตํธ์ธํ๋๋ก ํด๋ ์๊ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ broadcast(f, ::Any)
๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์ํ๋ ๊ฒ์ด broadcast(f, ::AbstractDict)
์ ๊ฐ์ ๊ตฌํ์ ์๋ดํ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์์ฐ์ค๋ฝ๊ฒ #25904์์ ์ ๊ธฐํ ์ง๋ฌธ์ ๋ตํ ๊ฒ์
๋๋ค. ํค-๊ฐ ์์ด ์๋ ์ฌ์ ๊ฐ).
์ฌ๋๋ค์ ์ด ๋ณํ์ ์ง์ ์ผ๋ก ๋ง์กฑํฉ๋๊น? ๋๋ ๋ชจ์์ด ์๋ ์ปจํ ์ด๋๋ฅผ ํตํด ๋ธ๋ก๋์บ์คํธํ ํ์๊ฐ ์์์ง๋ง ํญ์ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๊ฒ์ ๋ํด ๋ธ๋ก๋์บ์คํธํ์ต๋๋ค. ๋ด๊ฐ '์์ 'ํ๋ ๋ชจ๋ ๋น์ถ์ฒ ๊ฒฝ๊ณ ๋ ๋๋ฅผ ๋๋ฌผ ํ๋ฆฌ๊ฒ ๋ง๋ญ๋๋ค.
๋๋ _ํญ์_ ์ค์นผ๋ผ๋ก ์ทจ๊ธ๋์ด์ผ ํ๋ ๊ฒ๋ค์ ๋ํด ๋ฐฉ์กํฉ๋๋ค.
๊ทธ๋ฌํ ๊ฒ๋ค์ ์ข ๋ฅ๋ ๋ฌด์์ ๋๊น?
๋ฌด์์ด๋ ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ต์ ํ ๋ชจ๋ธ ์ ํ Model
๋ฐ ๊ฒฐ์ ๋ณ์ ์ ํ Variable
๋ฅผ ์ ์ํ๋ ํจํค์ง์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ ๊ฐ์ ๊ฐ์ ธ์ค๋ ค๋ x::Vector{Variable}
๊ฐ ์์ ์ ์์ต๋๋ค. value(::Variable, ::Model)::Float64
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ model
๋ชจ๋ธ. ์ด์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
value.(x, model)
๋ํ ์ธ์ ์ ํ์ด ๋ค๋ฅธ ํจํค์ง์์ ๊ฐ์ ธ์จ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์์ผ๋ฏ๋ก ํด๋น ์ ํ์ ๋ํด broadcastable
์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ด ๊ฒฝ์ฐ ์ ํ ๋ถ๋ฒ ๋ณต์ ๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ Ref
๋๋ ๋จ์ผ ์์ ํํ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทน๋ณตํ ์ ์๋ ๊ฒ์ ์๋์ง๋ง ์ ์๊ฐ์๋ ์๋์ ์ผ๋ก ๋ชจํธํ ์ฌ์ฉ ํจํด์ ์ง์ํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ํจ์ฌ ๋ ์ฐ์ํ๊ฒ ๋ง๋ญ๋๋ค.
์, ๊ทํ์ ์์ ์ ์ดํดํ๊ณ ๊ทธ๋ฌํ ์ํฉ์์ ์ฑ๊ฐ์ ์ผ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ฆ, ์ด์ ๋์์ ์ ๋์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. "๊ธฐ๋ณธ ํด๋ฐฑ์ด ์ผ๋ถ ๊ฒฝ์ฐ์ ํ์คํ ์๋ชป๋์์ต๋๋ค"๋ผ๋ ๊ฒ ์ค ํ๋์์ต๋๋ค.
๊ฐ๋จํ ๋งํด์ ์๋ชป๋ ํด๋ฐฑ์ ๋ฐฉ์งํ๋ ๋ค ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
iterate
ํ๋ ค๊ณ ํ๋ฉด ์ค์นผ๋ผ์ ๋ํด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.iterate
์์ ๋ฉ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ์ฃผ์ฅํด์ผ ํฉ๋๋ค. ๋๋ฆฌ๊ณ ์ํ์ ์
๋๋ค.applicable(iterate, โฆ)
ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋์์ ์ ํํฉ๋๋ค.์ต์ 1์ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ ๋์๊ณ , ์ต์ 2๋ ํ์ฌ ์ํ์ด๋ฉฐ, ์ต์ 3์ ์ญ๋ฐฉํฅ์ด๋ฉฐ, ์ต์ 4๋ ์ด์ ์ ํ ๋ฒ๋ ํด๋ณธ ์ ์ด ์๊ณ ๋ฒ๊ทธ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ ๋๋ค.
์ผ๋ถ ํ ๋ก ์ ๋ฐฐํ์์ ๋ฐ์ํ์์ ํ๋ฆผ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ด ์ค๋ ๋์ https://github.com/JuliaLang/julia/pull/25356 ์์ nalimilan
์ ๋ํด ๋ณธ ์ฃผ์ฅ์ ๋ํด์๋ ํ์ ์ด ์์ง ์์ต๋๋ค stevengj
์ ์์น.
์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ฌ์ฉ์ ์ ์ ์ปจํ ์ด๋์ ์ฌ์ฉํ ์ ์๋ ํ์ถ ํด์น๋ ๋จ ํ๋๋ฟ์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๋ ๋ช ์์ ์ผ๋ก ๋ธ๋ก๋์บ์คํธ๋ฅผ ์ ํํฉ๋๋ค. ์ด๊ฒ์ ์ปจํ ์ด๋ ์์ ์ด ์ฃผ ๋ชฉ์ ์ธ ํจ์์ ๊ฒฝ์ฐ ์๋นํ ๊ฑฐ๊พธ๋ก ๋ณด์ ๋๋ค.
์ด๊ฒ์ด ์ ์ ์ฃผ๋ ์๊ฒฌ ๋ถ์ผ์น์
๋๋ค. ๋์๊ฒ ๋ชจ๋ Julia ์ฝ๋์์ # of iterator types
<< # of types that should be treated as scalars in a broadcast situation
< # of broadcast calls
. ๋ฐ๋ผ์ '์ถ๊ฐ' ์์
์ ์ํํด์ผ ํ๋ ํ์๊ฐ ๋ธ๋ก๋์บ์คํธ ํธ์ถ ์๋ณด๋ค ๋ฐ๋ณต์ ์ ํ ์์ ๋ฐ๋ผ ์กฐ์ ๋๋ ๊ฒฝ์ฐ ์ ํธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๊ฐ ๋ฐ๋ณต์๋ฅผ ์ ์ํ๋ค๋ฉด, ๊ทธ๋ค์๊ฒ ํ๋ ์ด์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ด ์์ ํ ๋ถํฉ๋ฆฌํ ๊ฒ์ ์๋์ง๋ง, ๋ชจ๋ ํจํค์ง ์์ฑ์์๊ฒ ๋ฐ๋ณต ๋ถ๊ฐ๋ฅํ ๋ชจ๋ ์ ํ์ ๋ํด Base.broadcastable(x) = Ref(x)
๋ฅผ ์ ์ํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ _์์ ํ ๋ถํฉ๋ฆฌํฉ๋๋ค. broadcast
ํธ์ถ์ ๋์ ๋น์จ์์ ๋ชป์๊ธด (IMHO) Ref
broadcast
๋ฅผ ํผํ์ญ์์ค.
๋ฐ๋ณต์ ์ ์ํ๊ธฐ ์ํด ๋จ์ผ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ข๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ ํน์ฑ์ ๋ํด ํ๋ ๋ ๊ตฌํํ๊ฑฐ๋ ์ ๋ฐ๋ณต์์ ๋ํด Base.iteratorsize
๋ฅผ ์ง์ ํด์ผ ํ๋๋ก ๋ง๋๋ ๊ฒ์ ๊ทธ๋ฆฌ ๋ง์ ์์
์ด ์๋๋๋ค. ๋ฌธ์ ๊ฐ ์๋ HasLength
๊ธฐ๋ณธ๊ฐ ์ ๊ฑฐ). ๊ทธ๋ฌ๋ฉด broadcastable
๋์ฒด ๋ฐฉ๋ฒ์ด ํด๋น ํน์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์์ต๋๋ค. ๋๋ ๋จ์ผ ๋ฉ์๋๋ก ๋ฐ๋ณต์ ์ ์ํ๋ ๊ฒ์ ์ ๋ง ์ข์ํ๋ค๋ฉด https://github.com/JuliaLang/ ์์์ ๊ฐ์ด ๋ช
์์ ํน์ฑ ๊ธฐ๋ณธ๊ฐ์ applicable(iterate, ...)
๋ก ์ค์ ํ ์ ์์ต๋๋ค. julia/issues/18618#issuecomment -354618742, ํ์ํ ๊ฒฝ์ฐ ํด๋น ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํฉ๋๋ค. ๊ฐ์ ์ฝ๋์ ๊ฒฝ์ฐ String
๋ํ ์ฌ์ ํ ๋๋ ์ ๋ฌธ ์ฒ๋ฆฌ ํ ์ broadcastable
์ํ๋ ๊ฒฝ์ฐ.
์ด๋ ์ฌ์ค์ 0.6์ ๋์์ธ์ผ๋ก ์ด ๋ฌธ์ ์ #26421, #19577, #23197, #23746 ๋ฐ ๊ทธ ์ด์์ ์ด๋ํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ฐพ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค.
์ด๋ Base๊ฐ ์ ์ฒด ๊ฐ์ฒด ํด๋์ค์ ๋ํด ์๋ชป๋ ๊ธฐ๋ณธ ํด๋ฐฑ์ ์ ๊ณตํ๊ณ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ ํํ์ง ์๋ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ฉ์ปค๋์ฆ์ ์ ํธํ๋ ์ด์ ์ ๋๋ค. ๋ ๋จ์ ์ด๋ฉฐ ์ ํ์ ๊ณ ํต์ค๋ฝ์ง๋ง ๋ช ์์ ์ด์ด์ผ ํฉ๋๋ค.
๋ฐ๋ณต์์ ๊ฐ์ ๊ฒ๋ณด๋ค "์ค์นผ๋ผ์ ๊ฐ์" ์ฌ์ฉ์ ์ ์ ์ ํ์ด ๋ ๋ง๋ค๋ ๊ฒ์ด ์ณ์ ์๋ ์์ง๋ง, ๋ธ๋ก๋์บ์คํ
์ด ๊ฐ์ฅ ๋จผ์ ์ปจํ
์ด๋์ ๋ํ ์์
์ด๋ผ๋ ์ฌ์ค์ ์ง์งํฉ๋๋ค. f.(x)
๊ฐ f(x)
์๋๋ผ ์ผ์ข
์ ๋งคํ์ ์ํํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ค์นผ๋ผ ๊ธฐ๋ณธ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ ์ปจํ
์ด๋๋ ๋ธ๋ก๋์บ์คํ
๊ณผ ํจ๊ป ์์๋ณ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, String
๋ ์ค์นผ๋ผ์ฒ๋ผ ์๋ํ๋๋ก ํน์ ์ผ์ด์ค๊ฐ ์๋ ์ปฌ๋ ์
์ ํ์
๋๋ค. ์ผ๋ถ ์ํฉ(์: isletter.("a1b2c3")
)์์๋ ์๋ฏธ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง "์ ๊ทผ"ํ๊ณ ์์๋ณ๋ก ์์
ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ์ด ๋น๋์นญ ์ธ์์
๋๋ค. ์ค์ ๋ก ๋ธ๋ก๋์บ์คํธ ๊ฐ๋ฅํ ์ปฌ๋ ์
์ผ๋ก collect
ํ ์ ์๋ ๊ฒ๋ณด๋ค Ref์์ ์ปจํ
์ด๋๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๋ํํ์ฌ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ์ฃผ์ ์ฃผ์ฅ์ ๋๋ค. Ref์ ์ถ์ ํจ์ ๋ํด์๋ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ํด๊ฒฐ์ฑ ์ #27608์ ๋๋ค.
๊ทธ๋ด ์ ์์ง. ๋๋ ๊ทธ ๋ฌธ์ ์ ๋ํ ์ด๋ค ๋ น๋ค์ด ์ฃผ์ฅ์ด๋ ๋ง๋ฒ์ ํด๊ฒฐ์ฑ ์ด ์์ผ๋ฉฐ https://github.com/JuliaLang/julia/pull/27608 ์ด ์ํฉ์ ๊ฐ์ ํ ๊ฒ์ ๋๋ค.
@tkoolen ๋๋ ๊ฐ์ ์ฐ๋ ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
@mbauman ์์ ์ฃผ์ด์ง ์ฃผ์ฅ์ ์์ ํ ์ค๋๋ ฅ์ด ์์ ์ ์์ต๋๋ค. ๋ค์์ ๋ณด๋ค ์์ ํ ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋๋ค.
1) broadcastable
๋ฅผ ๋ชจ๋ iterable์ ๋ํ ํ์ ์ธํฐํ์ด์ค๋ก ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๊ฒ์ ์์ ํ ์ฒด๊ณ์ ์ด๋ฉฐ ๊ฐ๋ฐ์๊ฐ
์ดํฐ๋ ์ดํฐ๊ฐ ๋ธ๋ก๋์บ์คํธ์์ ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง.
collect(x)
๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ํ์ด ๋น๊ต์ ์ฝ์ต๋๋ค.
์ฑ๋ฅ ์ ํ๊ฐ ์๊ฒ ์ฃ ?
2) ๋ฐ๋ผ์ x
๊ฐ ์ค์นผ๋ผ๋ก ๋ธ๋ก๋์บ์คํธ๋๋ฉด f.(x)
๋ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
"'f'์ ๋ชจ๋ ์ธ์๊ฐ ์ค์นผ๋ผ๋ก ๋ธ๋ก๋์บ์คํธ๋จ"๊ณผ ๊ฐ์ f.(x, y, z)
๋ํ ๋ฆฐํฐ ๊ฒฝ๊ณ /์ค๋ฅ๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ด์จ๋ , #27563(์: #27608)์ ์์ ํ๊ณ ์ฌ์ฉ์๊ฐ 1.0 ์ด์ ์ ์ ์ ํ๋ ์ดํ๊ฒ ํ๋ ๊ฒ์ด ํ๋ช
ํ ์ ์์ต๋๋ค.
[0.7 ๋ฐ 1.0.0-rc1.0์ ์์ ์์ด ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค.]
์ด์จ๋ , #27563(์: #27608)์ ์์ ํ๊ณ ์ฌ์ฉ์๊ฐ 1.0 ์ด์ ์ ์ ์ ํ๋ ์ดํ๊ฒ ํ๋ ๊ฒ์ด ํ๋ช ํ ์ ์์ต๋๋ค.
[0.7 ๋ฐ 1.0.0-rc1.0์ ์์ ์์ด ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค.]
๋๋ ๋น์ ์ด 1.0์ด ์ถ์๋์๋ค๋ ์์์ ๋์ณค๋ค๊ณ ์๊ฐํฉ๋๋ค.
@StefanKarpinski ์ค์ ๋ก
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ์๋์ ์ ๋๋ค.
broadcast
๋ ๋ชจ์์ด ์๋ ์ปจํ ์ด๋์ฉ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ค์นผ๋ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.map
๋ ๋ชจ์์ด ์๋ ์ปจํ ์ด๋์ฉ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐ๋ณต์๋ก ์ฒ๋ฆฌํฉ๋๋ค.์๋ฅผ ๋ค์ด
broadcast
๋ ๋ฌธ์์ด์ "์ค์นผ๋ผ"๋ก ์ทจ๊ธํ๋ ๋ฐ๋ฉดmap
๋ ๋ฌธ์๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.