Thread Array leer, wie abfragen? (12 answers)
Opened by PETER_PAN2009 at 2010-03-29 13:42

Gast wer
 2015-12-24 14:30
#183268 #183268
Anzumerken ist, das if(@array) gleich zu if(scalar(@array)) was wiederum gleich zu if(scalar(@array) == 0) ist.
In diesem Fall wird im skalar-Kontext abgefragt, nicht im listen-Kontext.

Man muss da vorsichtig sein:
Code (perl): (dl )
1
2
3
4
5
6
my @array1 = (0);
my @array2 = ();
my @array3 = ();
if(grep{ $_ > 0 }(@array1,@array2,@array3)) {
  #...
}

Das ist nicht das selbe wie:
Code (perl): (dl )
1
2
3
4
5
6
my @array1 = (0);
my @array2 = ();
my @array3 = ();
if(@array1 > 0 or @array2 > 0 or @array3 > 0) {
  #...
}

Denn im ersten Fall ist es ein listen-Kontext im zweiten Fall ein skalar-Kontext.
Will man den Ersten Fall wie den zweiten haben muss man es so machen:
Code (perl): (dl )
1
2
3
4
5
6
my @array1 = (0);
my @array2 = ();
my @array3 = ();
if(grep{ $_ > 0 }(scalar(@array1),scalar(@array2),scalar(@array3))) {
  #...
}

oder
Code (perl): (dl )
1
2
3
4
5
6
my @array1 = (0);
my @array2 = ();
my @array3 = ();
if(grep{ @$_ > 0 }(\@array1,\@array2,\@array3)) {
  #...
}


Oder ähnliches um ein skalar-Kontext zu erzwingen.
Last edited: 2015-12-24 16:07:17 +0100 (CET)

View full thread Array leer, wie abfragen?