[Newbies] Assignment

Benjamin Schroeder benschroeder at acm.org
Thu Aug 9 23:57:19 UTC 2007


On Aug 9, 2007, at 7:45 PM, Blake wrote:

>> What exactly does the following line mean?
>> cr Character cr.
>
> A typo? Unless by some means I don't understand a nil object is  
> supposed to understand the message "Character".
>
>> I (as Perl programmer) would write:
>> cr := Character cr.
>
> I would think that's right.
>
>> [:c | c = cr ifTrue: [count count + 1]].
>
> Smalltalk has "=" and "==" as assignment and comparison  
> respectively. So you need the "==" to compare c to cr.
>
> It also should be "count := count + 1", I believe.

I agree with Blake - I think it's a typo and should be ":=", for  
assignment.

To clarify, "=" and "==" are different variants of comparison.  
Usually "=" is used for value comparison - for example, two different  
lists that had the same contents would be "=" equal. "==" means "is  
the same object".

To illustrate, you can try printing

	#(a b c) = #(a b c) copy	"true"
	#(a b c) == #(a b c) copy	"false"

(For many objects, these concepts are one and the same - they don't  
have any separate idea of value equality, and the default "=", on  
Object, is implemented in terms of "=".)

In my experience, it's idiomatic to use "=" for most things, and use  
"==" when you really mean "must be the same object".

Hope this helps,
Benjamin Schroeder



More information about the Beginners mailing list