Hallo, gibt es irgendeine Änderung zu schreiben statische Erweiterung in Swift wie in C# ist? Ich meine in C# kann ich gleiche Sache wie folgt schreiben:schnelle statische Erweiterung wie C#
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
und nennen Sie es wie folgt aus:
var s = ""; var x = s.WordCount();
Ich weiß, dass ich in swift gleiche Sache tun, aber es nur auf Klassentypen arbeiten.
var str:String?
let s = String.IsNilOrEmpty(str)
für diese Erweiterung: Auf statischen Typen muss ich so etwas wie schreiben
extension String {
static func isNilOrEmpty(str: String?) -> Bool{
if str == nil {
return true
}
if str!.isEmpty{
return true
}
return false
}
}
Gibt es ändern Sie es so nennen:
let s = str.IsNilOrEmpty()
Vielen Dank für Hilfe oder treten heraus richtiger Weg.
Das Problem ist, dass 'str' optional ist, Sie müssten also eine Erweiterung zu Optional definieren. –
Sie könnten dies einfach in einen Spielplatz fallen lassen, um zu sehen, ob es funktioniert. – ryantxr
Ich habe es in Playground versucht, aber mit diesem Ergebnis. Wenn ich eine statische Erweiterung verwende, kann ich diese Erweiterung auf einen optionalen Typ mit diesem Stil aufrufen: let some = String.isNilOrEmpty (someOptional) 'oder mit statischem remove kann ich' let some = someOptionalString.IsNilOrEmpty() 'tun. Aber ich suche nach einer Option, rufe sie in beiden Situationen auf dieselbe Weise auf (wie in meinem zweiten Beispiel). Wenn es diese Option gibt. –