簡體   English   中英

如何將塊循環中包含的變量返回給pharo中的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM