Привет, есть ли какие-либо изменения для написания статического расширения в Swift, как в C#? Я имею в виду в C# я могу написать то же самое, как это:быстрое статическое расширение, например C#
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
и назвать его так:
var s = ""; var x = s.WordCount();
Я знаю, что я могу сделать то же самое в быстры, но она работает только по типам классов. На статических типов я должен написать что-то вроде:
var str:String?
let s = String.IsNilOrEmpty(str)
для этого расширения:
extension String {
static func isNilOrEmpty(str: String?) -> Bool{
if str == nil {
return true
}
if str!.isEmpty{
return true
}
return false
}
}
Есть ли изменить называть это так:
let s = str.IsNilOrEmpty()
Спасибо за помощь или выгоняя на правильно.
Проблема заключается в том, что 'str' является необязательным, поэтому вам необходимо определить расширение для параметра Дополнительно. –
Вы можете просто бросить это на площадку, чтобы посмотреть, работает ли она. – ryantxr
Я попробовал его на игровой площадке, но с этим результатом. Если я использовал статическое расширение, я могу вызвать это расширение на необязательный тип с этим стилем 'let some = String.isNilOrEmpty (someOptional)' или со статическим удаленным я могу сделать 'let some = someOptionalString.IsNilOrEmpty()'. Но я ищу вариант, чтобы вызвать его в обеих ситуациях одинаково (как в моем втором примере). Если есть такая опция. –