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.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.