[英]Message in smalltalk
我是Smalltalk的新手,我有這個問題。
我寫了這個信息:
((Objednavkaset select:[:a | a auto porucha notEmpty])
select: [:d |
(d auto porucha select:[:x |
x datum_poruchy
between: x datum_vypujceni
and: x datum_skutecneho_vraceni])
size > 0])
我有這個問題,我需要從此選擇訪問datum_vypujceni
和datum_skutecneho_vraceni
select: [:d | (d auto porucha select:[:x | x datum_poruchy between: x datum_vypujceni and: x datum_skutecneho_vraceni]]
但我不知道如何,有什么辦法可以訪問它?
如果需要,這是圖表。
我喜歡Uko刪除初始select:
和使用anySatisfy:
的anySatisfy:
,但我認為Jarda的問題仍然沒有答案。
實際的問題是如何訪問這兩個實例變量datum_vypujceni
和datum_skutecneho_vraceni
的objed
,而不是如何寫劇本的選擇。
因此,這是一個簡單問題的答案:Jarda,在Objednavka
類中添加兩個方法來回答這些實例變量:
datum_vypujceni
^datum_vypujceni
datum_skutecneho_vraceni
^datum_skutecneho_vraceni
一旦有了這些方法,您的腳本將從objed
變量獲取這些數據。 還需要注意的是,你將需要另一次吸氣訪問datum_poruchy
一個的Poruchy
。 因此,請確保您的Poruchy
類具有getter方法
datum_poruchy
^datum_poruchy
你的目標是什么? 如果你想擁有有它屬於,你可以做這樣的Objednavka的其他日期之間日期至少一個Poruchy所有Objednavka:
(Objednavkaset select: [ :objed |
objed auto porucha anySatisfy: [ :poruchy |
poruchy datum_poruchy
between: objed datum_vypujceni
and: objed datum_skutecneho_vraceni ] ] ]
我也不知道您的#anySatisfy:
是否有#anySatisfy:
如果沒有,請告訴我。 如果您使用pharo進行編碼 ,則肯定具有
因為最內在的條件是
x datum_poruchy
between: x datum_vypujceni
and: x datum_skutecneho_vraceni
一切都是x對象的一部分,所以整個條件應該在那里,例如
hasValidPoruchy
^datum_poruchy
between: datum_vypujceni
and: datum_skutecneho_vraceni
在您的方法中,您將使用a auto porucha
和d auto porucha
。 較長的鏈條表明某些行為可能未在正確的對象上定義。 “得墨porucha anySatisfy:...
耳法則”建議減少這些鏈條,例如,通過在對象上定義,此自動引用什么是porucha anySatisfy:...
實際上是
當您澄清您的實際需求時,我會進行編輯,但到目前為止,我可以提供很多...
我認為您的第一級select:
很難看清事物。 使用anySatisfy:
將自動濾除空的。
Objednavkaset select: [:eachSet |
eachSet auto porucha anySatisfy:[:eachPorucha |
eachPorucha datum_poruchy
between: x datum_vypujceni
and: x datum_skutecneho_vraceni]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.