I'm using:
Pharo2.0 Latest update: #20625 I'm at "Reflection continued When I do the command to go to the next lesson: ProfStef default executeMethod: (ProfStef lookupSelector:#next). I get the error: ProfStef(Object) doesNotUnderstand: #executeMethod When I browse to the class in the system browser, ProfStef doesn't have an executeMethod object. I also checked Object and ProtoObject,just to be sure, but neither of them listed an executeMethod either. P.S.: I also looked at the Class Methods, though default looks like it returns an instance, so that didn't feel reasonable. Where is executeMethod supposed to reside, and was this an intentional change that just hasn't propagated yet ('m guessing the removal of the method) or is something wrong with my image? Also, if I wanted to include it into ProfStef, what would the method look like? -- Charles Hixson |
Hello, #withArgs:executeMethod: is implemented in ProtoObject, but we take care not to have too many methods there. This kind of facilities are usually in Object (For example, #isNil is in ProtoObject, but #notNil which is a facility for 'isNil not' is in Object). So I guess what you miss is:
Object>>executeMethod: method ^ self withArgs: #( ) executeMethod: method Best,
2013/10/26 Charles Hixson <[hidden email]> I'm using: |
Hello,
Thanks for the response. However being as I'm of the level of experience where using profStef it's probably a poor idea for me to even TRY to fix things. I may be an experienced programmer, but my level of Smalltalk knowledge is such that I'm only guessing at what you mean. I can't actually read the code you wrote. And I wouldn't know how to even insert it in my local image. (I finished the tutorial, but it wasn't covering the language to that depth. And Pharo by Example keeps describing things that don't match what I see on my screen. Often I can figure out what is meant, but sometimes there doesn't seem to be anything that does the same job. (E.g., I haven't figured out how to get "Time now." to report in 24hour time.) I THINK that this should be changed in profStef rather than in Object, probably by removing the reference. But that's just a guess. (That much I can do in my image, but I wouldn't want to do it in any shared code without someone a LOT more knowledgeable saying it's a good idea, and watching over my shoulder.) On 10/26/2013 10:56 PM, Clément Bera wrote:
-- Charles Hixson |
Ok well one will fix ProfStef one day, probably before the Pharo 3.0 release. To insert this code in your image and finish ProfStef, open the class browser (right click on the background, then class browser is the first context menu item), then right-click on the packages (left list), click on 'find class...', write 'Object' or 'ProfStef', press enter, then add a method with exactly this code (copy and past it):
executeMethod: method ^ self withArgs: #( ) executeMethod: method
Then ProfStef should work. Updating ProfStef was in the TODO list for Pharo 2 summer release, but I guess one forgot this method.
For Time now, you have: Time now printString ===>>> print in 12h mode Time now print24 ===>>> print in 24h mode
The object is the same, just the printing method is different.
By the way, a quick trick, when you look for senders or implementors or a message, write the selector anywhere, highlight it with your mouse, then right-click on it, click 'extended search...', then click 'senders of it ...' or 'implementors of it ...' so you can know directly who implements/sends this message without looking into all the class in the class browser. It helps a lot understanding code.
Pharo by example is good with Pharo 1.4. More recent version of Pharo may be a little different from what is in the book, however most of it should be very similar. The new book, Deep into Pharo is up to date with Pharo 3.0 but covers only advanced aspects of Pharo.
Enjoy working with Pharo :) 2013/10/27 Charles Hixson <[hidden email]>
|
In reply to this post by Charles Hixson-2
Try DateAndTime now
On Sunday, October 27, 2013, Charles Hixson <[hidden email]> wrote: > Hello, > Thanks for the response. However being as I'm of the level of experience where using profStef it's probably a poor idea for me to even TRY to fix things. I may be an experienced programmer, but my level of Smalltalk knowledge is such that I'm only guessing at what you mean. I can't actually read the code you wrote. And I wouldn't know how to even insert it in my local image. (I finished the tutorial, but it wasn't covering the language to that depth. And Pharo by Example keeps describing things that don't match what I see on my screen. Often I can figure out what is meant, but sometimes there doesn't seem to be anything that does the same job. (E.g., I haven't figured out how to get "Time now." to report in 24hour time.) > > I THINK that this should be changed in profStef rather than in Object, probably by removing the reference. But that's just a guess. (That much I can do in my image, but I wouldn't want to do it in any shared code without someone a LOT more knowledgeable saying it's a good idea, and watching over my shoulder.) > > On 10/26/2013 10:56 PM, Clément Bera wrote: > > Hello, > I think #executeMethod was a shortcut for method without arguments of the method #withArgs:executeMethod:. I missed it too, so I guess you can add a bug report, create and commit a slice and lastly it will be integrated in Pharo in the next few days. > #withArgs:executeMethod: is implemented in ProtoObject, but we take care not to have too many methods there. This kind of facilities are usually in Object (For example, #isNil is in ProtoObject, but #notNil which is a facility for 'isNil not' is in Object). So I guess what you miss is: > Object>>executeMethod: method > ^ self withArgs: #( ) executeMethod: method > Best, > > > 2013/10/26 Charles Hixson <[hidden email]> >> >> I'm using: >> >> Pharo2.0 >> Latest update: #20625 >> >> I'm at "Reflection continued >> >> When I do the command to go to the next lesson: >> ProfStef default executeMethod: (ProfStef lookupSelector:#next). >> >> I get the error: >> ProfStef(Object) doesNotUnderstand: #executeMethod >> >> When I browse to the class in the system browser, ProfStef doesn't have an executeMethod object. >> I also checked Object and ProtoObject,just to be sure, but neither of them listed an executeMethod either. >> >> P.S.: I also looked at the Class Methods, though default looks like it returns an instance, so that didn't feel reasonable. >> >> Where is executeMethod supposed to reside, and was this an intentional change that just hasn't propagated yet ('m guessing the removal of the method) or is something wrong with my image? Also, if I wanted to include it into ProfStef, what would the method look like? >> >> -- >> Charles Hixson >> >> > > > > -- > Charles Hixson -- --- Philippe Back Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Blog: http://philippeback.be | Twitter: @philippeback
High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller
|
Free forum by Nabble | Edit this page |