Re: oo::class - my variable vs variable

Liste des GroupesRevenir à cl tcl 
Sujet : Re: oo::class - my variable vs variable
De : gregor.ebbing (at) *nospam* gmx.de (greg)
Groupes : comp.lang.tcl
Date : 07. Jul 2024, 14:21:39
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v6e4p3$bk06$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.)
 
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
puts "DemoClass4"
puts " obj41"
set obj41 [DemoClass4 new 5 1]
$obj41 incrementInstanceVarsWithMy
puts "obj41: [$obj41 getInstanceVarsWithMy]"
puts " obj42"
set obj42 [DemoClass4 new 15 10]
$obj42 incrementInstanceVarsWithVariable
puts "obj42: [$obj42 getInstanceVarsWithVariable]"
if {0} {
Output:
DemoClass1
  obj11
obj11: instanceVar1: 6, instanceVar2: 1
  obj12
obj12: instanceVar1: 16, instanceVar2: 1
DemoClass2
  obj21
obj21: instanceVar1: 6, instanceVar2: 2
  obj22
obj22: instanceVar1: 16, instanceVar2: 11
DemoClass3
  obj31
obj31: instanceVar1: 6, instanceVar2: 2
  obj32
obj32: instanceVar1: 16, instanceVar2: 11
DemoClass4
  obj41
obj41: instanceVar1: 6, instanceVar2: 2
  obj42
obj42: instanceVar1: 16, instanceVar2: 11
}

Date Sujet#  Auteur
4 Jul 24 * oo::class - my variable vs variable7Mark Summerfield
5 Jul 24 +- Re: oo::class - my variable vs variable1Petro Kazmirchuk
5 Jul 24 +- Re: oo::class - my variable vs variable1greg
6 Jul 24 +* Re: oo::class - my variable vs variable2Mark Summerfield
7 Jul 24 i`- Re: oo::class - my variable vs variable1et99
7 Jul 24 `* Re: oo::class - my variable vs variable2greg
7 Jul 24  `- Re: oo::class - my variable vs variable1et99

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal