Typ Optional
![]() | Ten artykuł należy dopracować: od 2023-11 → zweryfikować treść i dodać przypisy, od 2023-08 → poprawić błędy językowe lub stylistyczne (pomoc: powszechne błędy językowe). Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu. |
Typ opcjonalny – typ polimorficzny występujący w niektórych językach programowania. Pozwala określić, czy obiekt lub zmienna mają wartość określoną, czy też jej brak.
Egzemplarz mogący przyjąć wartość nil powinien zostać zadeklarowany typem Optional. Dzięki tego rodzaju deklaracji, kod staje się bardziej ekspresywny.[1][2]
Przykłady
Język Swift
W języku Swift typ Optional deklaruje się za pomocą znaku ?[1][3]:
var przykladowyTypOptional: String? //W tym momencie przykladowyTypOptional przyjmuje wartość nil przykladowyTypOptional = "Tekst" //W tym momencie przykladowyTypOptional przyjmuje wartość "Tekst" var optionalInt: Int? //W tym momencie optionalInt przyjmuje wartość nil optionalInt = 1234 //W tym momencie optionalInt przyjmuje wartość 1234
W przypadku wymuszonego rozpakowania należy przyjąć warunek, że typ Optional nie przechowuje wartości nil, ponieważ kod próbuje uzyskać dostęp do wartości bez względu na to, czy ta wartość istnieje. Jeżeli zmienna lub stała typu Optional przechowuje wartość nil, program ulegnie awarii w trakcie działania. Z wymuszonego rozpakowania korzysta się, używając symbolu !.[1][3]
var TypOptional: String? TypOptional = "Tekst" let constString = TypOptional!
Za pomocą dołączania typu Optional można sprawdzić, czy zmienna lub stała typu Optional zawiera jakąś wartość. Jeżeli tak, to można tę wartość przypisać do innej stałej, bądź zmiennej. Z dołączania typu Optional korzysta się według następującego schematu:[1]
if let stalaTymczasowa = typOptional{ //tu można wykonać pewne działania ze stalaTymczasowa } else { //typ Optional nie zawiera wartości, tzn. zawiera wartość nil. Wykonany zostanie wiersz poleceń umieszczonych w tym miejscu. }
Język C++
W języku C++ od wersji 17 istnieje typ szablonowy
.[4] std::optional<T>
Język Rust
W języku Rust typ opcjonalny definiuje się jako
, gdzie enum Option<T> { None, Some(T) }
informuje o braku wartości, zaś None
zawiera wartość[5]. Some
Przypisy
- ↑ a b c d MatthewM. Matihiaas MatthewM., JohnJ. Gallagher JohnJ., Programowanie w języku Swift, HELION S.A., s. 93-102, ISBN 978-83-283-3142-6 .
- ↑ Optional - Swift Standard Library | Apple Developer Documentation [online], developer.apple.com [dostęp 2019-02-17] (ang.).
- ↑ a b Optional [online], Apple Developer Documentation [dostęp 2024-01-22] (ang.).
- ↑ std::optional - cppreference.com [online], en.cppreference.com [dostęp 2024-01-22] (ang.).
- ↑ Option in core::option - Rust [online], doc.rust-lang.org [dostęp 2023-11-08] .