|
Re: How to know where a BlockClosure finish: msg#00236lang.smalltalk.squeak.beginners
Marcus Denker a écrit : > > On 25.08.2006, at 17:14, Mathieu wrote: > >> Hi, >> >> I want to execute several block: >> >> block1 value >> block2 value >> block3 value >> >> but if one block return from a retrun statement I want to quit. >> >> [^3] <- want to quit here >> [3 + 4] >> >> So is there a way to know when a block evaluation finish by a return? >> > > There is #hasMethodReturn in BlockContext: > > [^3] hasMethodReturn --> true > [3] hasMethodReturn --> false. > > But this does a static analysis of the code... even if the ^is not executed > (e.g.) > [nil ifNotNil: [^3]] hasMethodReturn --> true > > so... it would be harder to analyze that dynamically... e.g. (without > me thinking > to much) you could add code (e.g. using ByteSurgeon) > in front of the return inside a block to set a flag... but I have to > admit that this > woud be quite strange stuff... > >> I need this to interprete a file containing smalltalk and I want to >> control the execution beceause I need to add some condition befor >> evaluate a block. > > Why do you need that? I am sure we can find a simple solution if we > understand > the problem better. > > Marcus > > Yes you are right In the script I have 2 kind of things: [ some Smalltalk ] And: Class selector [ some smalltalk ] So my idea was to call Compiler>>#evaluate:in:to:notifying:ifFail:logged: on the string inside the [] for the first things. And for the second I don't know yet but I don't think it's a probleme. So I evaluate the "block" one by one. I don't think I can put them all together beceause we can declare new method and use it in the next "block". But may be I shouln't evaluate right now juste store them in a CompiledMethod... Math
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: How to know where a BlockClosure finish, Marcus Denker |
|---|---|
| Next by Date: | RE: How to know where a BlockClosure finish, Ron Teitelbaum |
| Previous by Thread: | Re: How to know where a BlockClosure finish, Marcus Denker |
| Next by Thread: | RE: How to know where a BlockClosure finish, Ron Teitelbaum |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |