[英]How can I return a variable contained in a block loop to a method in pharo
說我有一個實現do:[] every:40s塊的方法。 塊中有一個值數據,應在每次延遲時返回。 我如何將其重新調整為pharo中的方法,如下所示:
Class>>updateMethod "This is a method" | scheduler data | scheduler := TaskScheduler new. scheduler start. "refresh every 40 seconds" scheduler do: [a get: 'https://MyServer/json'. Transcript show: 'Refreshing......'; cr. data := NeoJSONReader fromString: a contents; cr. every: 60 seconds
如果我理解您的問題,這里的問題是您不能使用諸如^data
類的表達式來返回接收到的數據,因為return運算符^
將退出該塊。
因此,要實現所需的行為,您需要在消息中發送接收到的data
。 在以下方面:
| scheduler data |
scheduler := TaskScheduler new.
scheduler start.
scheduler
do: [a get: 'https://MyServer/json'.
Transcript show: 'Refreshing......'; cr.
data := NeoJSONReader fromString: a contents; cr.
self processData: data].
every: 40 seconds.
通過這種方式,在該塊的每一個評價,你的代碼將不得不接受新的機會data
,並進行恰當的處理 。
附錄:選擇器processData:
只是實際消息的提示或占位符,它將對剛剛讀取的數據有所作為。 換句話說,您應該創建這樣的方法,並在其中放置應用程序中對數據進行的任何處理。 就像是
processData: data
self
validateData: data;
doSomethingWith: data;
"...blah..."
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.