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 mhaupt@gmail.com wrote:
Hi Tony,
On Tue, Oct 14, 2008 at 8:11 AM, Tony Giaccone tony@giaccone.org 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