Mehreren Variablen in einer Zeile einen Wert zuweisen?!
Mehreren Variablen in einer Zeile einen Wert zuweisen?!
am 04.03.2006 17:18:49 von Gerhard Wolf
Hallo,
wenn man mehrer Variablen auf einmal initialisieren kann:
my ($a,$b,$c,$d);
kann man mehren V. auch in einer Zeile einen Wert zuweisen?
($a,$b,$c,$d) = 1; # weist nur $a einen Wert zu! Warum?
Geht das in einer Zeile?
Re: Mehreren Variablen in einer Zeile einen Wert zuweisen?!
am 04.03.2006 17:29:36 von Lukas Mai
Gerhard Wolf schrob:
> Hallo,
>
> wenn man mehrer Variablen auf einmal initialisieren kann:
>
> my ($a,$b,$c,$d);
Das ist eine Variablendeklaration/-definition, keine Initialisierung.
> kann man mehren V. auch in einer Zeile einen Wert zuweisen?
>
> ($a,$b,$c,$d) = 1; # weist nur $a einen Wert zu! Warum?
Weil LISTE = LISTE werteweise verfährt:
($a, $b) = (2, 3); # $a = 2, $b = 3
Und wenn in der rechten Liste nicht genug Werte stehen, wird eben mit
undef aufgefüllt, d.h. es passiert folgendes:
($a,$b,$c,$d) = (1,undef,undef,undef);
> Geht das in einer Zeile?
Ja. Such dir was aus:
($a, $b, $c, $d) = map 1, 1 .. 4;
($a, $b, $c, $d) = (1) x 4;
$a = ($b = ($c = ($d = 1)));
$a = $b = $c = $d = 1;
$_ = 1 for $a, $b, $c, $d;
HTH, Lukas
Re: Mehreren Variablen in einer Zeile einen Wert zuweisen?!
am 04.03.2006 17:48:47 von Slaven Rezic
Gerhard Wolf writes:
> Hallo,
>
> wenn man mehrer Variablen auf einmal initialisieren kann:
>
> my ($a,$b,$c,$d);
>
> kann man mehren V. auch in einer Zeile einen Wert zuweisen?
>
> ($a,$b,$c,$d) = 1; # weist nur $a einen Wert zu! Warum?
>
> Geht das in einer Zeile?
($a,$b,$c,$d) = (1,1,1,1);
oder
($a,$b,$c,$d) = (1)x4;
--
Slaven Rezic - slaven rezic de
tkruler - Perl/Tk program for measuring screen distances
http://ptktools.sourceforge.net/#tkruler
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 16:49:12 von f.ballandt
hallo,
ich biege mal das Thema:
öfters stehe ich vor einem anderem init-Problem (default oder anderer Wert):
my$samples=input("enter oder anzahl: ");
$samples=1024 unless $samples;
solche häßlichen Zweizeiler sollten sich doch elegant verkürzen lassen,
oder?
(ohne strict ginge leichter)
Frank
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 16:59:11 von Ch Lamprecht
f.ballandt schrieb:
> hallo,
>
> ich biege mal das Thema:
>
> öfters stehe ich vor einem anderem init-Problem (default oder anderer
> Wert):
>
Hallo,
z.B. so :
my$samples=input("enter oder anzahl: ") ||1024;
# $samples=1024 unless $samples;
>
>
> solche häßlichen Zweizeiler sollten sich doch elegant verkürzen lassen,
> oder?
Grüße, Christoph
--
perl -e "print scalar reverse q/ed.enilno@ergn.l.hc/"
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 17:07:56 von Ingo Menger
Ch Lamprecht schrieb:
> f.ballandt schrieb:
> > hallo,
> >
> > ich biege mal das Thema:
> >
> > öfters stehe ich vor einem anderem init-Problem (default oder anderer
> > Wert):
> >
> Hallo,
> z.B. so :
> my$samples=3Dinput("enter oder anzahl: ") ||1024;
Funktioniert aber nur sachgemäß, wenn 0 kein gültiger Wert ist.
Schreib doch sub input so, daß ein weiterer Parameter für
default-Wert übergeben wird.
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 17:25:01 von Ch Lamprecht
Ingo Menger schrieb:
> Ch Lamprecht schrieb:
>
>
>>f.ballandt schrieb:
>>
>>>hallo,
>>>
>>>ich biege mal das Thema:
>>>
>>>öfters stehe ich vor einem anderem init-Problem (default oder anderer
>>>Wert):
>>>
>>
>>Hallo,
>>z.B. so :
>>
oder eben so:
my $samples=defined(input("enter oder anzahl: ")) ||1024;
>
>
> Funktioniert aber nur sachgemäß, wenn 0 kein gültiger Wert ist.
> Schreib doch sub input so, daß ein weiterer Parameter für
> default-Wert übergeben wird.
>
Grüße, Christoph
--
perl -e "print scalar reverse q/ed.enilno@ergn.l.hc/"
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 17:40:04 von Ch Lamprecht
Ch Lamprecht schrieb:
> Ingo Menger schrieb:
>
>> Ch Lamprecht schrieb:
>>
>>
>>> f.ballandt schrieb:
>>>
>>>> hallo,
>>>>
>>>> ich biege mal das Thema:
>>>>
>>>> öfters stehe ich vor einem anderem init-Problem (default oder anderer
>>>> Wert):
>>>>
>>>
>>> Hallo,
>>> z.B. so :
>>>
>
> oder eben so:
>
> my $samples=defined(input("enter oder anzahl: ")) ||1024;
Hallo,
sorry - Das war natürlich quatsch!
my $test;
my $samples = defined( $test = input())? $test:'default';
Christoph
>
>>
>>
>> Funktioniert aber nur sachgemäß, wenn 0 kein gültiger Wert ist.
>> Schreib doch sub input so, daß ein weiterer Parameter für
>> default-Wert übergeben wird.
>>
>
> Grüße, Christoph
--
perl -e "print scalar reverse q/ed.enilno@ergn.l.hc/"
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 19:04:43 von Wolf Behrenhoff
Ch Lamprecht schrieb:
> Ch Lamprecht schrieb:
>> my $samples=defined(input("enter oder anzahl: ")) ||1024;
>
> Hallo,
> sorry - Das war natürlich quatsch!
>
> my $test;
> my $samples = defined( $test = input())? $test:'default';
Siehst du, wie lang das ist und wie leicht du hierbei Fehler machen
kannst? (Du hast es ja gerade gezeigt!)
Die beste Lösung ist, einfach input einen zweiten (ggf. optionalen)
Parameter zu für input zu nehmen und dann im Programm
$test = input('xy oder enter', 1024);
aufzurufen.
Wolf
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 06.03.2006 22:39:44 von Slaven Rezic
"Ingo Menger" writes:
> Ch Lamprecht schrieb:
>
> > f.ballandt schrieb:
> > > hallo,
> > >
> > > ich biege mal das Thema:
> > >
> > > öfters stehe ich vor einem anderem init-Problem (default oder anderer
> > > Wert):
> > >
> > Hallo,
> > z.B. so :
> > my$samples=input("enter oder anzahl: ") ||1024;
>
> Funktioniert aber nur sachgemäß, wenn 0 kein gültiger Wert ist.
> Schreib doch sub input so, daß ein weiterer Parameter für
> default-Wert übergeben wird.
>
Oder man freut sich auf perl 5.10:
my$samples=input("enter oder anzahl: ") // 1024;
--
Slaven Rezic - slaven rezic de
Lost in your Tk widget tree? Try
http://user.cs.tu-berlin.de/~eserte/src/perl/Tk-WidgetDump/
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 07.03.2006 13:08:07 von struebig
Ingo Menger wrote:
>
> Ch Lamprecht schrieb:
> > z.B. so :
> > my$samples=input("enter oder anzahl: ") ||1024;
>
> Funktioniert aber nur sachgemäß, wenn 0 kein gültiger Wert ist.
Tut doch der Orginal code auch.
Struppi.
Re: einer Variablen in einer Zeile einen Wert aus zweien zuweisen?!
am 07.03.2006 14:39:16 von Ingo Menger
J Strübig schrieb:
> Ingo Menger wrote:
> >
> > Ch Lamprecht schrieb:
> > > z.B. so :
> > > my$samples=3Dinput("enter oder anzahl: ") ||1024;
> >
> > Funktioniert aber nur sachgemäß, wenn 0 kein gültiger Wert ist.
>
> Tut doch der Orginal code auch.
Stimmt, die Frage ist nur, ob das beabsichtigt ist. Und, wenn es hier
beabsichtigt war, ob es immer beabsichtigt ist, wenn man die
"häßlichen 2 Zeilen" verkürzen möchte.