NAME
Quiq::If - Liefere Werte unter einer Bedingung
BASE CLASS
METHODS
Klassenmethoden
catIf() - Konkateniere Strings bei erfüllter Bedingung
Synopsis
$str
=
$class
->catIf(
$bool
,
sub
{
$expr
,...});
Arguments
Returns
String
Description
Ist Bedingung $bool
falsch, liefere einen Leerstring. Andernfalls konkateniere die Werte der Ausdrücke $expr, ...
und liefere das Resultat zurück. Evaluiert ein Ausdruck $expr
zu undef
, wird der Wert durch einen Leerstring ersetzt.
Die Methode ist logisch äquivalent zu
$str
= !
$bool
?
''
:
join
''
,
$expr
//
''
, ...;
Sie vermeidet jedoch, dass $expr // '', ...
berechnet werden muss, wenn $bool
falsch ist.
Example
Konkatenation bei zutreffender Bedingung
Quiq::If->catIf(1,
sub
{
'Dies'
,
'ist'
,
'ein'
,
undef
,
'Test'
,
});
==>
'DiesisteinTest'
listIf() - Liefere Liste bei erfüllter Bedingung
Synopsis
@ret
=
$class
->listIf(
$bool
,
@list
);
@ret
=
$class
->listIf(
$bool
,
$sub
);
Arguments
Returns
String
Description
Ist Bedingung $bool
wahr, liefere @list bzw. den Rückgabewert von $sub->(), andernfalls eine leere Liste.
Die Methode ist logisch äquivalent zu
!
$bool
? ():
@list
bzw.
!
$bool
? ():
$sub
->()
Anmerkung: Die erste Variante hat den Nachteil, dass @list auch dann ausgewertet wird, wenn $bool falsch ist. In dem Fall ist die äquivalente Formulierung normalerweise vorzuziehen.
Example
Setze Attribut ready
des Quiq::Html::Page-Objekts nur dann, wenn $refresh erfüllt ist:
my
$html
= Quiq::Html::Page->html(
$h
,
...
Quiq::If->listIf(
$refresh
,
ready
=>
qq~
var refresh = $refresh;
var interval = setInterval(function() {
refresh--;
\$('#timer').text(refresh);
if (refresh == 0) {
clearInterval(interval);
\$('#timer').text('Lade Seite...');
location.reload();
}
},1000);
~
),
);
VERSION
1.225
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.