[英]estudio does not check `require` when it should?
繼承斷言的一般規則如下:
在特定示例中,有效的前提條件是
True
or else
valid_csv (a_csv) and then attached {POWER_DEVICE} a_csv.device
這體現在特征的扁平形式中組合前置條件開頭的關鍵字require
和中間的require else
中。 表達式True
是繼承的。 這是父項中特征的先決條件。
一種可能的解決方案是將valid_csv (a_csv)
移到父特征,並在后代中重新定義valid_csv
。 如果valid_csv
對於所有調用都是通用的,但第二個測試因后代而異,則最好引入一個新功能is_known
並在父級中有 2 個前置條件子句:
is_valid_csv: is_valid_csv (a_csv)
is_known_csv: is_known_csv (a_csv)
is_known_csv
在 class POWER_CSV_PROCESSOR
中的實現將是
is_known_csv (a_csv: ...)
do
Result := attached {POWER_DEVICE} a_csv.device
end
並且POWER_CSV_PROCESSOR
中特征process
的前提條件為空。
然后調用者會做類似的事情
if processor.is_known_csv (csv) then
processor.process (csv)
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.