15μ₯: Double colon
1. μ΄μ€ μ½λ‘ (::) κ°μ
TCLμμ μ΄μ€ μ½λ‘ (::)μ λ€μκ³Ό κ°μ μ©λλ‘ μ¬μ©λ©λλ€:
μ μ λ€μμ€νμ΄μ€ μ§μ
λ€μμ€νμ΄μ€ ꡬλΆ
μ κ·νλ(fully qualified) μ΄λ¦ μμ±
2. μ μ λ€μμ€νμ΄μ€ μ§μ
μ΄μ€ μ½λ‘ μ μ΄λ¦ μμ μ¬μ©νλ©΄ μ μ λ€μμ€νμ΄μ€μ λ³μλ νλ‘μμ λ₯Ό μ°Έμ‘°ν©λλ€.
set ::globalVar 10
proc localScope {} {
puts $::globalVar # μ μ λ³μ μ κ·Ό
}
localScope # μΆλ ₯: 10
3. λ€μμ€νμ΄μ€ ꡬλΆ
μ΄μ€ μ½λ‘ μ λ€μμ€νμ΄μ€λ₯Ό ꡬλΆνλ λ° μ¬μ©λ©λλ€.
namespace eval MyNamespace {
variable myVar 20
proc myProc {} {
puts $MyNamespace::myVar
}
}
MyNamespace::myProc # μΆλ ₯: 20
4. μ κ·νλ μ΄λ¦ μμ±
μ¬λ¬ λ€μμ€νμ΄μ€λ₯Ό κ±°μΉλ κ²½μ°, μ΄μ€ μ½λ‘ μΌλ‘ μ 체 κ²½λ‘λ₯Ό μ§μ ν μ μμ΅λλ€.
namespace eval Outer {
namespace eval Inner {
proc nestedProc {} {
puts "Nested procedure"
}
}
}
::Outer::Inner::nestedProc # μΆλ ₯: Nested procedure
5. λ³μ λ° νλ‘μμ μ΄λ¦ μΆ©λ λ°©μ§
μ΄μ€ μ½λ‘ μ μ¬μ©νμ¬ μλ‘ λ€λ₯Έ λ€μμ€νμ΄μ€μ λμΌν μ΄λ¦μ κ°μ§ λ³μλ νλ‘μμ λ₯Ό ꡬλΆν μ μμ΅λλ€.
namespace eval NS1 {
proc common {} {
puts "NS1's common procedure"
}
}
namespace eval NS2 {
proc common {} {
puts "NS2's common procedure"
}
}
NS1::common # μΆλ ₯: NS1's common procedure
NS2::common # μΆλ ₯: NS2's common procedure
6. νμ¬ λ€μμ€νμ΄μ€ μ°Έμ‘°
νμ¬ λ€μμ€νμ΄μ€λ₯Ό λͺ μμ μΌλ‘ μ°Έμ‘°ν λ μ¬μ©ν μ μμ΅λλ€.
namespace eval MyNS {
variable localVar 30
proc accessVar {} {
variable localVar
puts ${::MyNS::localVar} # νμ¬ λ€μμ€νμ΄μ€μ λ³μ λͺ
μμ μ°Έμ‘°
}
}
MyNS::accessVar # μΆλ ₯: 30
7. μ΄μ€ μ½λ‘ κ³Ό upvar μ¬μ©
μμ μ€μ½νμ λ³μλ₯Ό μ°Έμ‘°ν λ μ΄μ€ μ½λ‘ κ³Ό upvarλ₯Ό ν¨κ» μ¬μ©ν μ μμ΅λλ€.
proc outerProc {} {
set localVar 40
innerProc
}
proc innerProc {} {
upvar ::localVar globalVar
puts $globalVar
}
outerProc # μΆλ ₯: 40
8. μ£Όμμ¬ν β οΈ
κ³Όλν μ΄μ€ μ½λ‘ μ¬μ©μ μ½λμ κ°λ μ±μ λ¨μ΄λ¨λ¦΄ μ μμ΅λλ€.
λ€μμ€νμ΄μ€λ₯Ό μ¬μ©ν λλ μ΄λ¦ μΆ©λμ μ£Όμν΄μΌ ν©λλ€.
μ μ λ³μμ κ³Όλ€ μ¬μ©μ μ½λμ λͺ¨λμ±μ ν΄μΉ μ μμ΅λλ€.
9. νκ³Ό μλ Ή π‘
κ°λ₯ν μ§μ λ³μλ₯Ό μ¬μ©νκ³ , μ μ λ³μ μ¬μ©μ μ΅μννμΈμ.
λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό λ Όλ¦¬μ μΌλ‘ ꡬ쑰ννμΈμ.
λ³μλ νλ‘μμ μ μ€μ½νκ° λΆλΆλͺ ν λλ λͺ μμ μΌλ‘ μ΄μ€ μ½λ‘ μ μ¬μ©νμΈμ.
ν° νλ‘μ νΈμμλ λ€μμ€νμ΄μ€λ₯Ό νμ©νμ¬ λͺ¨λνλ ꡬ쑰λ₯Ό λ§λμΈμ.
10. μ±λ₯ κ³ λ €μ¬ν π
μ΄μ€ μ½λ‘ μ μ¬μ©ν μ μ λ³μ μ κ·Όμ μ§μ λ³μ μ κ·Όλ³΄λ€ μ½κ° λ λ릴 μ μμ΅λλ€.
κΉκ² μ€μ²©λ λ€μμ€νμ΄μ€λ₯Ό μμ£Ό μ°Έμ‘°νλ©΄ μ±λ₯μ μν₯μ μ€ μ μμ΅λλ€.
TCLμ μ΄μ€ μ½λ‘ (::)μ λ§μ€ν°νμ¬ ν¨κ³Όμ μΈ λ€μμ€νμ΄μ€ κ΄λ¦¬μ λ³μ μ€μ½ν μ μ΄λ₯Ό μννμΈμ!
Last updated