Проверьте, передано ли значение аргумента ноль или пусто - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь переписать код C #, который я написал ранее в Swift.

public static string Right( string value, int length)
{
    if (String.IsNullOrEmpty(value)) return string.Empty;
    return value.Length <= length ? value : value.Substring(value.Length - length);
}

Я не могу написать заявление эффективно в swift.

Ответы [ 3 ]

1 голос
/ 30 мая 2019

Это можно сделать так просто:

func right(value: String, length: Int) -> String {
    guard value.count > length, length > 0 else { return value }
    return String(
        value.dropLast(length) // we just drop `length` number of elements from the end
    )
}
1 голос
/ 30 мая 2019

В Swift вы можете написать,

func right(value: String, length: Int) -> String {
    if value.count <= length {
        return value
    } else {
        let index = value.index(value.startIndex, offsetBy: value.count-length)
        return String(value[..<index])
    }
}

Нет необходимости проверять empty string. Это будет покрыто самой else condition.

Пример:

right(value: "abcdefgh", length: 3) //abcde
0 голосов
/ 30 мая 2019

Использование prefix и?: В качестве однострочного

func right(value: String, length: Int) -> String {
    return value.count > length ? String(value.prefix(value.count - length)) : value
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...