Arrays literales en smalltalk

De Uqbar wiki

Por si les sirve les comento un toque como funciona el tema de los arrays en smalltalk.

Acuérdense que en Smalltalk vale usar arrays literales.

Array: colección de tamaño fijo.

Literal: objetos especiales como números, caracteres, strings, nil, booleanos, arrays literales (cuac), etc.

Para usar un Array literal los elementos del array deben ser literales, ejemplos:

  #('brujula' 'mapa' 'botellaDeGrogXD')

Escribir eso, genera un array que tiene 3 strings, si necesitan un Bag pueden escribir

  #('brujula' 'mapa' 'botellaDeGrogXD') asBag

El tema está cuando queremos un array que tiene objetos que deben obtenerse a través de mensajes, ejemplo:

  #(4+3)

Uno ingenuamente se pensaría que eso da un array de un elemento (el objeto 7), pero Smalltalk piensa que quisimos hacer un array que tiene 3 elementos (el 4, el símbolo +, y el 3)

Para crear arrays con objetos que no son literales, se deben utilizar arrays dinámicos (en vez de escribir #() se escribe { }, en vez de separarse los elementos con espacio se separan con punto)

  {4 + 3} "Esto es un array con un solo elemento, el número 7"

  {4 + 3 . 'hola' size . Date today year} "Esto es un array con tres elementos: 7, 4 y 2011"

De todas formas, en los parciales no suele ser habitual el uso de Arrays (ya que queremos colecciones con tamaño variable y los elementos que componen dicha colección son desconocidos al escribir el código).

Latest update on July 17, 2017 by GitHub