Typ Optional – Wikipedia, wolna encyklopedia
Typ opcjonalny – typ polimorficzny występujący w niektórych językach programowania. Pozwala określić, czy obiekt lub zmienna mają wartość nieokreś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
[edytuj | edytuj kod]Język Swift
[edytuj | edytuj kod]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++
[edytuj | edytuj kod]W języku C++ od wersji 17 istnieje typ szablonowy
.[4] std::optional<T>
Język Rust
[edytuj | edytuj kod]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
[edytuj | edytuj kod]- ↑ a b c d Matthew Matihiaas , John Gallagher , 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] .