The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Quiq::If - Liefere Werte unter einer Bedingung

BASE CLASS

Quiq::Object

METHODS

Klassenmethoden

catIf() - Konkateniere Strings bei erfüllter Bedingung

Synopsis

$str = $class->catIf($bool,sub {$expr,...});

Arguments

$bool

Bedingung

sub {$expr,...}

Ausdrücke, deren Resultat konkateniert wird.

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

$bool

Bedingung

@list

Liste, die bei erfüllter Bedingung geliefert wird.

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.