Portál AbcLinuxu, 30. dubna 2025 16:49
K rozšiřujícím patterns as a when přibyl ještě unless. Má opačný význam k when.
Fůůůůj :(
and as break case cfn clone coro cycle do else enum false fn for glob goto if in let match module new nil not or quote rec redo result return seq true unless unquote when while with yield __FILE__ __LINE__
a bit operátory band bor bxor bnot asr bsr bsl
, některá ještě nejsou využita (module - moduly, cfn - generátory, coro - korutiny) a další momentálně přidávat neplánuju.
coalesce()
z SQL? Má libovolný počet parametrů a vrací první nenulovou hodnotu. Není to tak úplně funkce/metoda a je potřeba ji řešit pomocí nestandardních prostředků (klíčové slovo, nebo něco, co jen vypadá jako funkce). Její výhoda je v tom, že po nalezení nenulové hodnoty se ty další výrazy už nemusí vyhodnocovat.
No nevím, ale myslím, že tady by stačil operátor or
, např.
let x = a or b or c or d or e or f
vyhodnotí se a, pokud není nil, přiřadí se, dál už to nejde; pokud je nil, vyhodnotí se b, apod. nevýhodou je, že nefunguje na hodnotách false, to by se dalo možná udělat ještě jinak:
let x = a unless a == nil else b unless b == nil else c unless c == nil else d .....
x = a || b || c …Boolean by to chtělo objektový – proměnná pak může nabývat tří hodnot:
true
, false
, null
.
Použití klíčových slov má výhodu v tom, že i člověk neznalý jazyka může hned vidět, co to znamená. Některé části kódu se pak čtou skoro jako angličtina, což je výhoda.
Řekl Cobolista, a prezentoval jako výhodu Cobolu, to že chudák Fortranista musí luštit a = b + c, zatímco on má pěkné anglické ADD b,c GIVING A. Kupodivu později se i v tom Cobolu objevila možnost použít ono a=b+c.
Práce s ukecaným jazykem je utrpení. Problém je v tom, že někdo abstrahuje problém, řeší ho v nějaké vnitřní kondenzované formě, a místo aby pak tohle kondenzované řešení zapsal, tak napíše román, který sice připomíná angličtinu, ale dostat z něj jádro problému, je dost oser.
Aneb neopakujte historické chyby.
perl -ne 'print "chro chro\n" if /jsem prase/'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.