Integer>>* aNumber
“Não sabemos o tipo específico de aNumber portanto não sabemos o tipo de multiplicação”
“Então enviamos uma mensagem para aNumber indicando que somos um inteiro”
^aNumber productFromInteger: self
Float>>productFromInteger: anInteger
“Aqui sabemos o tipo dos dois fatores da multiplicação, já podemos multiplicar”
^anInteger asFloat * self
Float* aNumber
"Answer a Float that is the result of multiplying the receiver by the argument.
The primitive fails if it cannot coerce the argument to a Float"
<primitive: 49>
^aNumber productFromFloat: self "this line is only executed if the primitive fails"
Double>>productFromInteger: anInteger
^anInteger asDouble * self