From 4c7a23867edd4fa318ff65e375916e33e894de86 Mon Sep 17 00:00:00 2001 From: Teascade Date: Sun, 27 Aug 2017 00:07:20 +0000 Subject: [PATCH] Replace exists-keyword with ?-operator --- README.md | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 2d9d9c4..7431492 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,9 @@ These are the operators ofthen called as "conditions" and most commonly used in - `!` Not unary operator. Negates the value associated with it. - `!true` returns false - `!(true ^ true)` returns true +- `?` Optional-exists unary operator. Checks weather the operator-wrapped value before the operator is empty or not. + - `empty?` returns false. See [`empty`](#empty)-keyword + - `optional?` returns true, if optional contains a value. ### Arithmetic operators Arithmetic operators are operators used to do math calculations such as addition or multiplication. any integer or float -based types can be used together. @@ -125,7 +128,6 @@ Arithmetic operators are operators used to do math calculations such as addition - `2 % 3` returns 2 - `6 % 2` returns 0 - ### Assignment operators Assignment operators are a special kind of operator used assign values to variables. The most basic type of assignment operator being of course `=`. @@ -195,7 +197,6 @@ The following keywords are specified to execute an action. - [`continue`](#continue) skips the rest of the loop's body for a new iteration. - [`unwrap`](#unwrap) unwraps an optional-type variable. - [`some`](#some) wraps a variable into an optional. -- [`exists`](#exists) tests weather an optional is not empty. - [`empty`](#empty) value to set in an optional variable. - [`as`](#as) casts the leftside value into the type on the rightside of this keyword. - [All operators](#operators) are also somewhat considered as keywords. @@ -359,27 +360,11 @@ let optional: i32? = some number; - Some must be followed by a variable. The variable is then wrapped into an optional and the optional is returned. - There must be a space between the `some` and the variable. -#### `exists` -Exists is a keyword that is used to check weather an optional variable contains a value or not. -``` -let optional: i32? = something(); -if (optional exists) { - // optional contains a value -} else { - // optional is empty. -} - -let op_exists: boolean = optional exists; -``` -- Unlike `unwrap` and `some`, `exists` must follow the optional value. Exists-keyword then returns the result as a boolean. -- There must be a space between the optional and `exists` -- If `exists` is after a non-optional variable, an exeption occurs. - #### `empty` Empty is the keyword used to set an optional as empty (to not contain a value). ``` let optional: i32? = empty; -if (optional exists) { +if (optional?) { // Never executed } else { // Executed, since optional is empty @@ -395,7 +380,7 @@ As is the keyword used when you need to cast a variable to another. It will retu let long: i64 = 5; let int_opt: i32? = long as i32; let int = 0; -if (int_opt exists) { +if (int_opt?) { int = unwrap int_opt; } else { // Cast failed