you should really read the syntax chapter of the Pharo by example because it explains all these points really precisely. I'm sure that you will get a ahhhhha effect once you read it.
Stef On Mar 23, 2013, at 2:14 PM, Mohammad Al Houssami (Alumni) <[email protected]> wrote: > Probably because I am not using dots except at the end of blocks which I > think is wrong. > This is a sample of what I had earlier: > currentCharacter = CHARACTERTABULATION ifTrue: [anythingElseBoolean:= false > AfterDOCTYPENameState value: currentCharacter ]. > There should be a dot after false right ? Once I add the dot I get a complain. > > > From: [email protected] > [mailto:[email protected]] On Behalf Of Esteban > Lorenzano > Sent: Saturday, March 23, 2013 3:09 PM > To: A friendly place where any question about pharo is welcome > Subject: Re: [Pharo-users] Method Calling Inside Nested Blocks > > if it is a method, it needs the receiver, in this case "self" (remember, any > call in smalltalk is: receiver+message). > If for some weird reason you did not need it before (like some chained call > effect), that was just by chance... you just were lucky before :) > > Esteban > > On Mar 23, 2013, at 1:58 PM, "Mohammad Al Houssami (Alumni)" > <[email protected]> wrote: > > > So the method declaration should be self afterDOCTYPEPublicKeywordState: > currentCharacter. ? > > But I have been doing the same for quite some time and I wasn’t getting any > complains. This is the first time and the only thing that changed is that I > have two blocks in this case. As I said earlier if I move the method call > outside the block it works with no complains J > > I'll change the names of all my methods to camel case. Thanks for that > > > From: [email protected] > [mailto:[email protected]] On Behalf Of Esteban > Lorenzano > Sent: Saturday, March 23, 2013 2:52 PM > To: A friendly place where any question about pharo is welcome > Subject: Re: [Pharo-users] Method Calling Inside Nested Blocks > > > On Mar 23, 2013, at 12:31 PM, "Mohammad Al Houssami (Alumni)" > <[email protected]> wrote: > > > > Hello everyone > > I was trying to save my method which has the below piece of code > > anythingElseBoolean = false ifFalse: [ > doctypeString := reader next: 6 > doctypeString asLowercase = 'public' ifTrue: [ > AfterDOCTYPEPublicKeywordState value: > currentCharacter > ] > > I get a complain that the AfterDOCTYPEPublicKeywordState is unknown even > though I have a method with this name. > > AfterDOCTYPEPublicKeywordState is a METHOD???? > then, you are missing some points: > > 1) it does not conforms conventions (it should start with lowercase) > 2) you need a self call > > so, it would be like this: > > self afterDOCTYPEPublicKeywordState value: currentCharacter. > > but that is also wrong from a design point of view (anti demeters law). So, > you better create a (perhaps private) method who does the assignment. And > then you have something like this: > > self afterDOCTYPEPublicKeywordState: currentCharacter. > > Esteban > > > > If I move the method call outside outside the ifTrue block to the ifFalse > block it doesn’t complain. > > Is the problem because of nested blocks ? If that’s the case then what would > be a good work around ? > > > > > Thanks > Mohammad
