Der kürzeste ist:
let LocalizedString = { NSLocalizedString($0, comment:"") }
Aber es ist eigentlich eine neue func tion. Nur Verpackung NSLocalizedString
.
Vielleicht können Sie nicht dokumentierte @transparent
Attribut verwenden. Es inlines Funktion Anruf. siehe this topic on Developer Forum.
@transparent LocalizedString(key:String) -> String {
return LocalizedString(key, comment:"")
}
Aber es ist nicht zu empfehlen. Darüber hinaus, solange meine Tests, alle der folgenden Codes schließlich emittieren genau den gleichen LLVM IR-Code mit -O
Optimierung.
script1: mit @transparent
import Foundation
@transparent func LocalizedString(key:String) -> String {
return LocalizedString(key, comment:"")
}
println(LocalizedString("key"))
script2: ohne @transparent
import Foundation
func LocalizedString(key:String) -> String {
return LocalizedString(key, comment:"")
}
println(LocalizedString("key"))
Script3: Direkte NSLocalizedString
Anruf
import Foundation
func LocalizedString(key:String) -> String {
return LocalizedString(key, comment:"")
}
println(NSLocalizedString("key", comment:""))
Alle oben genannten sind inline, um direkte NSLocalizedString
Aufruf durchzuführen.
Aber der folgende Code sendet anders:
script4: Schließung
import Foundation
let LocalizedString = { NSLocalizedString($0, comment:"") }
println(NSLocalizedString("key", comment:""))
Einwickeln Es ist auch inlined, aber zusätzliche refcount
Anweisung LocalizedString
eingeführt wird.
So, wie ein Abschluss, sollten Sie einfach verwenden diese:
func LocalizedString(key:String) -> String {
return LocalizedString(key, comment:"")
}
können Sie eine neue Funktion erstellen, die NSLocalizedString nennen? – kap
Hm, ich frage mich, ob es einen anderen Weg gibt ... wie ein Makro oder etwas zu verwenden – Caipivara
Der 'Kommentar' wird in die lokalisierte Zeichenfolgendatei geschrieben und ist sehr nützlich für den Übersetzer, auch wenn es nur für dich ist. Es macht es leichter sich daran zu erinnern, wofür diese Zeichenfolge gedacht ist. Keine Frage für Ihre Frage. – zisoft