-
Data: 2018-11-19 09:22:44
Temat: Re: Niezmienniki pętli
Od: Roman Tyczka <n...@b...no> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Sun, 18 Nov 2018 23:14:44 -0800 (PST), Maciej Sobczak wrote:
> Wystarczy rozszerzyć składnię asserta. W tej chwili assert musi dostać jedno
wyrażenie, ale można by go rozszerzyć tak, żeby akceptował dowolne fragmenty kodu. W
niektórych językach to się robi o tyle łatwiejsze, że wszystko jest albo może być
wyrażeniem, również pętla While czy cokolwiek innego - wtedy do takiego asserta można
wsadzić dowolny fragment kodu, nawet z własnymi definicjami zmiennych wykorzystanych
w środku. Ale w C++ chyba niewiele trzeba, żeby to osiągnąć, np. z taką składnią:
>
> assert(dowolnyfragmentkodu, wynik_bool);
>
> I użyć tego tak:
>
> assert(
> int i; // albo inne definicje
> int j = x; // x jest na zewnątrz, ale widać go tutaj
>
> while (orzemy_jak_możemy)
> {
> // obliczenia, wywołania funkcji, itd.
> ...
> },
>
> x > 0 && i < 10 // jakiś ostateczny warunek
> );
>
> I wtedy assert, tylko w trybie debug, wykonuje ten kod a na końcu sprawdza warunek
logiczny z drugiego swojego argumentu. W trybie release nic nie robi.
>
> Kto zaproponuje definicję makra assert o takich zdolnościach?
Makra nie zaproponuję, ale wrzucę ciekawostkę.
W języku Solidity, używanym do smart kontraktów w sieci Ethereum
(kryptowaluty) stosuje się coś co się nazywa modifier, przykładowo dopisuje
się w klasie modifier isOwner, który sprawdza czy kontrakt wywołał jego
właściciel i tenże modifier dopisuje się do pozostałych metod, które mają
go sprawdzać przed wywołaniem, w przykładzie robi to metoda getData():
[...]
modifier isOwner {
require(msg.sender == owner);
}
function getData() public isOwner {
return data
}
[...]
ps. require to odpowiednik asserta
--
pozdrawiam
Roman Tyczka
Następne wpisy z tego wątku
- 19.11.18 10:37 Queequeg
- 19.11.18 10:45 Queequeg
- 19.11.18 17:15 g...@g...com
- 19.11.18 19:45 g...@g...com
- 19.11.18 19:49 g...@g...com
- 19.11.18 21:18 s...@g...com
- 19.11.18 21:44 Queequeg
- 19.11.18 22:10 fir
- 19.11.18 22:16 fir
- 19.11.18 23:12 g...@g...com
- 20.11.18 00:00 AK
- 20.11.18 00:20 AK
- 20.11.18 05:37 s...@g...com
- 20.11.18 10:35 Queequeg
- 20.11.18 10:43 Queequeg
Najnowsze wątki z tej grupy
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-04-30 Warszawa => Konsultant funkcjonalny systemu Oracle E-Business Suite R1
- 2024-04-30 Obajtek bez majtek
- 2024-04-29 Warszawa => Staż w dziale Sprzedaży B2B (2 miejsca) <=
- 2024-04-29 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-04-29 Ulm => IT Network Engineer <=
- 2024-04-29 Gdańsk => UX/UI Designer <=
- 2024-04-29 Gdańsk => AI Specialist <=
- 2024-04-29 frankowicze odcinek NNN
- 2024-04-29 Warszawa => Specjalista ds. Cyberbezpieczeństwa <=
- 2024-04-29 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2024-04-29 Zielona Góra => Inżynier R&D Energoelektronik <=
- 2024-04-29 Warszawa => Google Ads Freelancer <=
- 2024-04-28 wymiana przewodu od licznika do mieszkania
- 2024-04-28 Lustra w maszynie ASML
- 2024-04-28 Elektryk przytarł podłogę