The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.190

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.