簡體   English   中英

聊天消息

[英]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_vypujcenidatum_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_vypujcenidatum_skutecneho_vraceniobjed ,而不是如何寫劇本的選擇。

因此,這是一個簡單問題的答案: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: 如果沒有,請告訴我。 如果您使用 ,則肯定具有

因為最內在的條件是

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 poruchad 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.

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