Booleanos en Smalltalk
and:/or: toman bloques y cortocircuitan; & y | no.
"and:/or: take blocks and short-circuit; & and | do not."
| inked paperLoaded |
inked := true.
paperLoaded := false.
(inked and: [paperLoaded])
ifTrue: [Transcript show: 'Pull an impression'; cr]
ifFalse: [Transcript show: 'Not ready'; cr].
(inked or: [1/0 > 0])
ifTrue: [Transcript show: 'Short-circuit saved us'; cr].
Transcript show: (inked & paperLoaded) printString; cr.
Transcript show: inked not printString; cr.
Transcript show: (inked xor: paperLoaded) printString; cr.
Cómo funciona
and:evalúa su bloque solo cuando hace falta.- La demo de
or:dividiría por cero sin el atajo. notyxor:completan el protocolo.
Palabras clave y builtins usados aquí
falsetrue
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 481
- Tokens
- 86
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 86 segundos.
Paso 3 de 3 en Mensajes y bloques; paso 6 de 31 en Fundamentos del lenguaje.