A similar piece of code prints numbers:
Notice how we used the same message, but have sent it to a
new type of object—an integer (from class
way in which an integer is printed is much different from
the way a string is printed on the inside, but because we
are just sending a message, we do not have to be aware of
this. We tell it to
printNl, and it prints itself out.
As a user of an object, we can thus usually send a particular
message and expect basically the same kind of behavior,
regardless of object’s internal structure (for
instance, we have seen that sending
printNl to an object
makes the object print itself). In later chapters we will
see a wide range of types of objects. Yet all of them can
be printed out the same way—with
White space is ignored, except as it separates words. This example could also have looked like:
However, GNU Smalltalk tries to execute each line by itself if possible. If you wanted to write the code on two lines, you might have written something like:
From now on, we’ll omit
printNl since GNU Smalltalk
does the service of printing the answer for us.
An integer can be sent a number of messages in addition to just printing itself. An important set of messages for integers are the ones which do math:
9 + 7
Answers (correctly!) the value 16. The way that it does this, however, is a significant departure from a procedural language.