| Deutsch English Français Italiano |
|
<v6e4p3$bk06$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!feeder1.cambriumusenet.nl!feed.tweak.nl!217.73.144.44.MISMATCH!feeder.ecngs.de!ecngs!feeder2.ecngs.de!168.119.53.7.MISMATCH!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: greg <gregor.ebbing@gmx.de>
Newsgroups: comp.lang.tcl
Subject: Re: oo::class - my variable vs variable
Date: Sun, 7 Jul 2024 15:21:39 +0200
Organization: A noiseless patient Spider
Lines: 222
Message-ID: <v6e4p3$bk06$1@dont-email.me>
References: <Uh2cncwZ4ewS0Rv7nZ2dnZfqn_udnZ2d@brightview.co.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 07 Jul 2024 15:21:39 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="dd5c4f34dddbde65219f8c3d73f17eed";
logging-data="380934"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18OejGAPI1t/mS4/zmC+jf3LbZq1M2f6Ys="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:PQrg57y//cWuzpicwi018ZJgmCA=
Content-Language: de-DE
In-Reply-To: <Uh2cncwZ4ewS0Rv7nZ2dnZfqn_udnZ2d@brightview.co.uk>
Bytes: 7533
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.)
>
Hello Mark,
I have replaced your demo, hope that's OK.
Different when there are multiple variables as arguments. Originally I
expected the opposite behavior. I had misunderstood that until now.
#DemoClass1 and DemoClass2
# difference constructor with variable individually or together
# difference output for instanceVar2, no initialization with 15 (DemoClass1)
#DemoClass3 and DemoClass4
# no difference with my variable individually or together
# in example:
# objx1 with my variable, x for DemoClass
# objx2 with variable, x for DemoClass
oo::class create DemoClass1 {
constructor {val1 val2} {
variable instanceVar1 instanceVar2
set instanceVar1 $val1
set instanceVar2 $val2
}
method incrementInstanceVarsWithMy {} {
my variable instanceVar1 instanceVar2
incr instanceVar1
incr instanceVar2
}
method incrementInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
incr instanceVar1
incr instanceVar2
}
method getInstanceVarsWithMy {} {
my variable instanceVar1 instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
method getInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
}
oo::class create DemoClass2 {
constructor {val1 val2} {
variable instanceVar1
variable instanceVar2
set instanceVar1 $val1
set instanceVar2 $val2
}
method incrementInstanceVarsWithMy {} {
my variable instanceVar1 instanceVar2
incr instanceVar1
incr instanceVar2
}
method incrementInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
incr instanceVar1
incr instanceVar2
}
method getInstanceVarsWithMy {} {
my variable instanceVar1 instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
method getInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
}
oo::class create DemoClass3 {
constructor {val1 val2} {
my variable instanceVar1 instanceVar2
set instanceVar1 $val1
set instanceVar2 $val2
}
method incrementInstanceVarsWithMy {} {
my variable instanceVar1 instanceVar2
incr instanceVar1
incr instanceVar2
}
method incrementInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
incr instanceVar1
incr instanceVar2
}
method getInstanceVarsWithMy {} {
my variable instanceVar1 instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
method getInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
}
oo::class create DemoClass4 {
constructor {val1 val2} {
my variable instanceVar1
my variable instanceVar2
set instanceVar1 $val1
set instanceVar2 $val2
}
method incrementInstanceVarsWithMy {} {
my variable instanceVar1
my variable instanceVar2
incr instanceVar1
incr instanceVar2
}
method incrementInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
incr instanceVar1
incr instanceVar2
}
method getInstanceVarsWithMy {} {
my variable instanceVar1
my variable instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
method getInstanceVarsWithVariable {} {
variable instanceVar1
variable instanceVar2
return "instanceVar1: $instanceVar1, \
instanceVar2: $instanceVar2"
}
}
puts "DemoClass1"
puts " obj11"
set obj11 [DemoClass1 new 5 1]
$obj11 incrementInstanceVarsWithMy
puts "obj11: [$obj11 getInstanceVarsWithMy]"
puts " obj12"
set obj12 [DemoClass1 new 15 10]
$obj12 incrementInstanceVarsWithVariable
puts "obj12: [$obj12 getInstanceVarsWithVariable]"
puts \n
puts "DemoClass2"
puts " obj21"
set obj21 [DemoClass2 new 5 1]
$obj21 incrementInstanceVarsWithMy
puts "obj21: [$obj21 getInstanceVarsWithMy]"
puts " obj22"
set obj22 [DemoClass2 new 15 10]
$obj22 incrementInstanceVarsWithVariable
puts "obj22: [$obj22 getInstanceVarsWithVariable]"
puts \n
puts "DemoClass3"
puts " obj31"
set obj31 [DemoClass3 new 5 1]
$obj31 incrementInstanceVarsWithMy
puts "obj31: [$obj31 getInstanceVarsWithMy]"
puts " obj32"
set obj32 [DemoClass3 new 15 10]
$obj32 incrementInstanceVarsWithVariable
puts "obj32: [$obj32 getInstanceVarsWithVariable]"
puts \n
========== REMAINDER OF ARTICLE TRUNCATED ==========