imprimer sans nouvelle ligne dans swift

Dans swift 2.0, print() ajoute automatiquement un caractère de nouvelle ligne. Dans swift 1.2, println() et print() étaient des fonctions distinctes. Alors, comment puis-je imprimer du texte sans y append une nouvelle ligne, car swift ne dispose plus d’une fonction d’impression qui n’ajoute pas de nouvelles lignes.

À partir de Swift 2.0, la méthode d’impression recommandée sans nouvelle ligne est la suivante:

 print("Hello", terminator:"") 

print fonction d’ print a complètement changé depuis la dernière révision de Swift , maintenant elle semble beaucoup plus simple et il existe des variantes de méthode pour imprimer sur une console standard.

La signature de la méthode pour l’impression ressemble à ceci,

 public func print(_ items: Any..., separator: Ssortingng = default, terminator: Ssortingng = default, to output: inout Target) where Target : TextOutputStream 

Et voici quelques exemples d’utilisation,

 print("Swift is awesome.") print("Swift", "is", "awesome", separator:" ") print("Swift", "is", "awesome", separator:" ", terminator:".") 

Impressions:

 Swift is awesome. Swift is awesome Swift is awesome. 

Concaténer

 print("This is wild", terminator: " ") print("world") 

Impressions:

 This is wild world 

Donc, en utilisant Terminator, vous devez faire attention à ce que le contenu soit pertinent pour la même ligne.

Objet d’impression avec CustomSsortingngConvertible

 struct Address { let city: Ssortingng } class Person { let name = "Jack" let addresses = [ Address(city: "Helsinki"), Address(city: "Tampere") ] } extension Person: CustomSsortingngConvertible { var description: Ssortingng { let objectAddress = unsafeBitCast(self, to: Int.self) return Ssortingng(format: "", objectAddress) } } let jack = Person() print(jack) 

Impressions:

  

CustomDebugSsortingngConvertible

 extension Person: CustomDebugSsortingngConvertible { var debugDescription: Ssortingng { let objectAddress = unsafeBitCast(self, to: Int.self) let addressSsortingng = addresses.map { $0.city }.joined(separator: ",") return Ssortingng(format: "",objectAddress) } } 

Maintenant, avec lldb , vous pouvez utiliser la commande po et cela imprimera un object comme ceci dans la console lldb,

  

Connexion au fichier à l’aide de TextOutputStream

 struct MyStreamer: TextOutputStream { lazy var fileHandle: FileHandle? = { let fileHandle = FileHandle(forWritingAtPath: self.logPath) return fileHandle }() var logPath: Ssortingng = "My file path" mutating func write(_ ssortingng: Ssortingng) { fileHandle?.seekToEndOfFile() fileHandle?.write(ssortingng.data(using:.utf8)!) } } 

Maintenant, en utilisant print to stream,

 print("First of all", to: &myStream ) print("Then after", to: &myStream) print("And, finally", to: &myStream) 

Imprime à classer:

 First of all Then after And finally 

CustomReflectable

 extension Person: CustomReflectable { var customMirror: Mirror { return Mirror(self, children: ["name": name, "address1": addresses[0], "address2": addresses[1]]) } } 

Maintenant, dans le débogueur lldb, si vous utilisez la commande po,

 > po person 

Le résultat serait quelque chose comme ça,

  - name : "Jack" ▿ address1 : Address - city : "Helsinki" ▿ address2 : Address - city : "Tampere" 

Dans Swift 2.0, vous pouvez le faire:

Version basique

 print("Hello World") result "Hello World\n" 

En utilisant le terminateur

 print("Hello World", terminator:"") result "Hello World" 

Utiliser un séparateur

 print("Hello", "World", separator:" ") result "Hello World\n" 

Utilisation du séparateur et du terminateur

 print("Hello", "World", separator:" ", terminator:"") result "Hello World" 

En utilisant une variable

 var helloworld = "Hello World" print(helloworld) result "Hello World\n" 

En utilisant deux variables

 var hello = "Hello" var world = "World" print (hello, world) result "Hello World\n" 

Si vous voulez la même ligne en boucle:

 for i in 1...4 { print("", i, separator: " ", terminator:"") } print() 

Sortie: 1 2 3 4