Portál AbcLinuxu, 1. května 2025 22:32
Ternarni operator jsem nahrazoval fintou
cond and true_val or false_val
(cond and [true_val] or [false_val])[0]
Viac v diveintopython.
if cond x = 1 else x = 2 end
xxx = yyy if zzz
. Nevím, zda je v Ruby i nějaká else
část, to už bych asi zas tak nadšený nebyl, ale je pravda, co se tvrdí v článku: je to mnohem bližší přirozenému uvažování.
O chvilku později… pravda, mluvíte vlastně o čtení. Je fakt, že podmínku utopenou kdesi za výrazem můžu snadno přehlídnout… teda mohl bych, kdybych nepoužíval Ruby akorát na skriptíky zvící max. desítek řádek. Ale něco na tom bude.
(cond)?(x=1):(x=2):)
x = if cond then 1 else 2 end
(bla (if nil 0 1))…ale každému, jak je libo.
„ak mas normalny editor, lahko vidis kde ti zatvorky zacinaju/koncia a tie slova su naozaj redundantne a zvysuju neprehladnost“Díky, přidám si Tě na seznam obáhjců Lispu, tohle pořád tvrdím.
print "OK" if cond
, protože else část je povinná. takže člověka hned napadne print "OK" if cond else pass
, což je špatně, protože se nerozhoduje o provedení příkazu print, ale o jeho argumentu, což mi nepřijde vždy úplně intuitivní. Takže jestli tomu rozumím, touto novou syntaxí ekvivalent if cond: print "OK"
zapsat nelze .. (?)
print "OK"
není na tomto místě povolen (Python v tomto ohledu dodržuje algolovské rozdělení příkazů a výrazů). Je pravda, že část else by mohla být nepovinná a fungovat by to mohlo asi takto. Nechce to někdo navrhnout?
a = 5 if cond else NoneNo a ten
if cond: print "OK"
napsat jde i ve 2.5
print "OK" if True else None
... já tam pořád cpal ham = print ...
. Ale právě ta větev else None tam být musí, přitom zbytečně
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.