Karakash: Verständnisproblem: Instanziierung

  
#!perl -w  
  
use strict;  
use warnings;  
  
package initialize;  
sub new() {  
my $IsFulfilled = 0;  
my $self=shift;  
my $newInst={};  
bless($newInst,$self);  
  
}  
package Method;  
use base 'initialize';  
sub new(){  
my $name;  
}  
	sub checkFulfilled()  
	{  
		$initialize::IsFulfilled =1 ;  
	}  
package main;  
  
$method::IsFulfilled = 0;  
print $method::IsFulfilled;  
$method=Method->checkFulfilled();  
print $method::IsFulfilled;  

Ausgabe: 00
Erwartete Ausgabe: 01

Wieso funktioniert augenscheinlich die Instanziierung nicht?

  1. Wieso funktioniert augenscheinlich die Instanziierung nicht?

    Sie funktioniert, aber du hast ein Problem mit der Gültigkeit von Variabeln und immer noch sehr sehr viele unsauberkeiten, auf die wir dich schon hingewiesen hatten, im Code.

    http://aktuell.de.selfhtml.org/artikel/cgiperl/scoping/

    Struppi.

  2. $method::IsFulfilled = 0;
    print $method::IsFulfilled;
    $method=Method->checkFulfilled();
    print $method::IsFulfilled;

    Ach so: und noch mal (ich glaub zum dritten mal) das sind keine Instanzvariabeln sondern statische package Variabeln.

    Und - dein Skript läuft nicht:
    Global symbol "$method" requires explicit package name at test.pl line 27.

    Du hast nirgendwo $method oder $initialize definiert.

    Struppi.

    1. Und - dein Skript läuft nicht:
      Global symbol "$method" requires explicit package name at test.pl line 27.

      Du hast nirgendwo $method oder $initialize definiert.

      Struppi.

      #!perl -w  
        
      use strict;  
      use warnings;  
        
      package initialize;  
      sub new() {  
      my $IsFulfilled = 0;  
      my $self=shift;  
      my $newInst={};  
      bless($newInst,$self);  
        
      }  
        
        
      package Method;  
      use base 'initialize';  
      sub new(){  
      my $name;  
      }  
      	sub checkFulfilled()  
      	{  
      		$initialize::IsFulfilled = 1;  
      	}  
        
      package main;  
        
        
        
        
      my $method = Method -> new();  
        
      $method::IsFulfilled = 0;  
      print $method::IsFulfilled;  
      $method=Method->checkFulfilled();  
      print $method::IsFulfilled;  
      # print $method->checkFulfilled();
      

      Console.jpg

      Läuft bei mir wunderbar?
      Evtl hatte es nen kleineren Tippfehler.
      Ich werde mir mal den Link zur Gemüte führe.

      1. Moin Moin!

        package initialize;
        sub new() {
        my $IsFulfilled = 0;
        my $self=shift;
        my $newInst={};
        bless($newInst,$self);

        }

        Zu diesem Murks hab ich Dir in Deinem alten Thread schon was geschrieben. Warum machst Du zu offensichtlich dem alten Thema einen neuen Thread auf?

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. hi,

          Zu diesem Murks hab ich Dir in Deinem alten Thread schon was geschrieben. Warum machst Du zu offensichtlich dem alten Thema einen neuen Thread auf?

          Und n CrossPost ises auch noch, tse, tse, tse...

          Hotti

      2. Läuft bei mir wunderbar?

        Was soll das?
        Der Code den du uns vorher gezeigt läuft nicht, dass du jetzt lauffähigen Code hast, macht diese aussage nicht falsch.

        Es ist unglaublich müßig dir helfen zu wollen, da du bisher so gut wie nichts, von dem was wir dir gesagt haben umgesetzt hast und jetzt dort nochmal gesagt bekommst.

        Und wie pq dort schon sagt, es bringt nichts auschließlich rumzuprobieren, wenn du nicht mal die Grundlagen verstehst. Dein Ansatz ist so, einfach falsch.

        Struppi.

  3. hi,

    use warnings;

    Und die auch lesen! Möchtest Du? possible typo

    Dein Konstruktor

      
    sub new() {  
    	my $IsFulfilled = 0;  
    	my $self=shift;  
    	my $newInst={};  
    	bless($newInst,$self);  
    }  
    
    

    hat eine my-Variable: $IsFulfilled, die sonst nirgendwo eine Verwendung findet.

    Die Zuweisung in

      
    sub checkFulfilled(){  
    	$initialize::IsFulfilled =1 ;  
    }  
    
    

    hat keinen Effekt, warnings weist Dich darauf hin.

    Hotti