Exactly Correct.

There exists a method on Set, with selector contains: which would on first examination seem to be the right thing.

Set contains: object

but contains seems to take a Block not an object.

so perhaps includes does what I want?

Clearly this works

validHands anySatisfy: [ :elem | elem respondsTo: #throwsAHand ]

in that if the class has a that selector it would be correct.

But what I really was looking for is

Given a set, how do I determine

1) If an object is a member of he set.

2) How do I specify when two objects are equal? Is part of this.

Obviously two objects which have the same address which I think in smalltalk is == operator are the same object..

but what if I want equality to be based on the value of some internal class value.

Maybe I'm thinking too much like a java programmer.

Tony

On Oct 14, 2008, at 2:56 AM, Matthias Berth wrote:

Hi Michael,

I think Tonys model of the game is  like this:

A Player throws a hand. That can be any of "rock", "scissors", or
"paper". Now someone (a Game object?) has to check if the player did
not make a mistake, say by throwing a "well". The set of legal throws
(in this game, anyway) is somehow defined by Tony. So the Game object
checks if the throw is an element of the set of legal throws.

Am I describing this correctly, Tony?

Cheers

Matthias

On Tue, Oct 14, 2008 at 8:45 AM, Michael Haupt <[EMAIL PROTECTED]> wrote:
Hi Tony,

On Tue, Oct 14, 2008 at 8:11 AM, Tony Giaccone <[EMAIL PROTECTED]> wrote:
validHands := Set new.
validHands add: Rock new; add Paper new; add Scissors  new.

Assume I have a player object which responds to the method throwsAHand with
an instance of Rock Paper or Scissors.

how do I craft

validHands contains: aPlayer throwsAHand

'ere, how about this:

validHands anySatisfy: [ :elem | elem respondsTo: #throwsAHand ]

Collection >> #anySatisfy: takes a block and evaluates it for all the
elements in the collection. It returns true if the block evaluates to
true for any of the elements, and false otherwise.

Object >> #respondsTo: accepts a symbol (!) denoting a message name
and returns true if the object in question understands that message.

Did I make clear what the above code does?

Best,

Michael
_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to