Sujet : Re: oo::class - my variable vs variable
De : gregor.ebbing (at) *nospam* gmx.de (greg)
Groupes : comp.lang.tclDate : 05. Jul 2024, 22:01:46
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v69mvq$3efr3$1@dont-email.me>
References : 1
User-Agent : Mozilla Thunderbird
Am 04.07.24 um 09:17 schrieb Mark Summerfield:
I am trying to learn TclOO. I have created two classes P and Q which
appear to have identical behavior. Class P uses "my variable" and Q uses
"variable". Can someone explain the difference between them. (I am
familiar with Python and Go if that's any help with explaining.)
oo::class create P {
constructor {{x 0} {y 0}} {
my variable x_
my variable y_
set x_ $x
set y_ $y
}
method x {} {
my variable x_
return $x_
}
method set_x {x} {
if {![string is integer -strict $x]} {
throw NOT_AN_INT "x must be an int not \"$x\""
}
my variable x_
set x_ $x
}
method y {} {
my variable y_
return $y_
}
}
oo::class create Q {
constructor {{x 0} {y 0}} {
variable x_
variable y_
set x_ $x
set y_ $y
}
method x {} {
variable x_
return $x_
}
method set_x {x} {
if {![string is integer -strict $x]} {
throw NOT_AN_INT "x must be an int not \"$x\""
}
variable x_
set x_ $x
}
method y {} {
variable y_
return $y_
}
}
puts "P"
set p1 [P new]
puts "p1 x=[$p1 x] y=[$p1 y]"
$p1 set_x 5
puts "p1 x=[$p1 x] y=[$p1 y]"
try {$p1 set_x "invalid"} trap {} err { puts $err }
set p2 [P new 0 -8]
puts "p2 x=[$p2 x] y=[$p2 y]"
$p2 set_x 17
puts "p2 x=[$p2 x] y=[$p2 y]"
puts "p1 x=[$p1 x] y=[$p1 y]"
puts "Q"
set q1 [Q new]
puts "q1 x=[$q1 x] y=[$q1 y]"
$q1 set_x 5
puts "q1 x=[$q1 x] y=[$q1 y]"
try {$q1 set_x "invalid"} trap {} err { puts $err }
set q2 [Q new 0 -8]
puts "q2 x=[$q2 x] y=[$q2 y]"
$q2 set_x 17
puts "q2 x=[$q2 x] y=[$q2 y]"
puts "q1 x=[$q1 x] y=[$q1 y]"
Hello
if the website is not known:
https://wiki.tcl-lang.org/page/Variables+in+TclOOGregor