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 ==========