Есть ли у swift стандартные функции (видимости), как в Kotlin? - PullRequest
0 голосов
/ 03 марта 2019

В Kotlin у нас есть список стандартных функций (областей) (например, let, apply, run и т. Д.)

Пример использования ниже

val str : String? = "123"
str?.let{ print(it) }

Это делает код более кратким без необходимости иметь if (str != null)

В быстром, я кодирую его, как показано ниже

let str: String? = "123"
if str != nil { print(str!) }

У меня должен быть if str != nil,Есть ли let, предоставленный по умолчанию, который я мог бы использовать (без написания своего собственного)?

К вашему сведению, я новичок в Swift, и проверка не кажется, что он нашел.

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

если хотите, расширьте функциональность Optional

extension Optional {
    func `let`(do: (Wrapped)->()) {
        guard let v = self else { return }
        `do`(v)
    }
}

var str: String? = "text"
str.let {
    print( $0 ) // prints `text`
}
str = nil

str.let {
    print( $0 ) // not executed if str == nil
}
0 голосов
/ 03 марта 2019

Очевидно, что Swift делает проверку на ноль

let str: String? = "123"
if let strUnwrapped = str { print(strUnwrapped) }

И если действительно хотите убедиться, что это не ноль, используйте guard (спасибо @CouchDeveloper за указание)

let str: String? = "123"
guard let strUnwrapped = str else { return }

Я знаю, что это не дало явного ответа на вопрос о наличии функции определения объема, или нет, но это дает мне первоначальное намерение найти способ Swift проверить ноль или не ноль, который я искал, как let существования Котлина.б.

0 голосов
/ 03 марта 2019

Можно использовать Optional.map:

let str1 : String? = "123"
str1.map { print($0) }

отпечатки 123.

let str2 : String? = nil
str2.map { print($0) }

Ничего не печатается.

Таким образом, если необязательный параметр не является nil, он разворачивается и используется в качестве параметра для закрытия map.в противном случае замыкание не будет вызвано.


Более быстрым подходом в swift было бы использование необязательного связывания:

var str: String? = "123"
if let s = str { 
    print(s) 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...