typestar

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

  1. and: evalúa su bloque solo cuando hace falta.
  2. La demo de or: dividiría por cero sin el atajo.
  3. not y xor: completan el protocolo.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Mensajes y bloques; paso 6 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →