|
The class library provided by #Smalltalk is mostly compatible with the ANSI
Smalltalk standard. A couple exceptions to that are with DateAndTime and
Duration. Since both of these use standard .NET classes for their
representation, they have some limitations on their values. The DateAndTime
class can only represent values between January 1, 0001 and December 31, 9999,
and the Duration class can only represent values between
-10675199:02:48:05.4775808 and 10675199:02:48:05.4775807 (that's 10,675,199
days). Another difference between #Smalltalk and the ANSI standard Smalltalk
is with indexed instance variables. #Smalltalk does not have indexed
instance variables. If you want indexed instance variables, you need to
include a real instance variable that contains an array or byte array.
While the library provided by #Smalltalk is compatible with the ANSI
standard, it sometimes works differently than other Smalltalks. One of the main
differences is with identity comparisons. While most Smalltalks use tagged
SmallIntegers, the #Smalltalk compiler uses objects to represent SmallIntegers.
Therefore, "1 + 1 == 2" evaluates to false in #Smalltalk.
Another difference in the class library provided by #Smalltalk is with the
#initialize method. In most Smalltalks when you define an instance method
#initialize, you must also specify a #new method that sends the #initialize
method. This results in many classes implementing #new as "super new
initialize". In #Smalltalk, the #new method in Object already sends the
#initialize method. The #initialize method is defined as an empty method. This
allows you to simply override the #initialize method without having to worry
about overriding the #new method. Furthermore, if also allows you to remove many
duplicate #new methods throughout the class library. However, if you are porting
software from another Smalltalk to #Smalltalk, you will need to remove the
"super new initialize" #new methods. Otherwise, you will have #initialize being
sent multiple times.
Sharp Smalltalk Links:
Download Now!
Class Library
Compiler
Debugger
Implementation
To Do |