In swift 2.0, print()
aggiunge automaticamente un carattere di nuova riga. In swift 1.2, println()
e print()
erano funzioni separate. Quindi, come faccio a stampare del testo e non aggiungo una nuova riga poiché non ha più una funzione di stampa che non aggiunge una nuova riga.stampa senza nuova riga in swift
risposta
A partire dal Swift 2.0, il metodo consigliato di stampare senza ritorno a capo è:
print("Hello", terminator:"")
Anche se vedi solo l'interfaccia con il parametro 'seperator'. Puoi semplicemente ignorarlo perché ha un valore predefinito 'func print (items: Any ..., separator: String = default, terminator: String = default)' – Binarian
Ora è ufficiale su Xcode 7 – lenhhoxung
Dove nei documenti Swift qualcuno dovrebbe scoprire a cosa corrisponde "predefinito"? – 7stud
print
la funzione è completamente cambiata dalla revisione tardiva di Swift, ora sembra molto più semplice e ci sono varianti di metodo per stampare su console standard.
la firma del metodo per la stampa simile a questa,
public func print<Target>(_ items: Any..., separator: String = default, terminator: String = default, to output: inout Target) where Target : TextOutputStream
e qui ci sono alcuni casi d'uso,
print("Swift is awesome.")
print("Swift", "is", "awesome", separator:" ")
print("Swift", "is", "awesome", separator:" ", terminator:".")
Stampe:
Swift is awesome.
Swift is awesome
Swift is awesome.
Concatenazione
print("This is wild", terminator: " ")
print("world")
Stampe:
This is wild world
Quindi, utilizzando terminator, si deve fare attenzione che i contenuti sono rilevanti per la stessa linea.
Stampa Oggetto con CustomStringConvertible
struct Address {
let city: String
}
class Person {
let name = "Jack"
let addresses = [
Address(city: "Helsinki"),
Address(city: "Tampere")
]
}
extension Person: CustomStringConvertible {
var description: String {
let objectAddress = unsafeBitCast(self, to: Int.self)
return String(format: "<name: \(name) %p>", objectAddress)
}
}
let jack = Person()
print(jack)
Stampe:
<name: Jack 0x608000041c20>
CustomDebugStringConvertible
extension Person: CustomDebugStringConvertible {
var debugDescription: String {
let objectAddress = unsafeBitCast(self, to: Int.self)
let addressString = addresses.map { $0.city }.joined(separator: ",")
return String(format: "<name: \(name), addresses: \(addressString) %p>",objectAddress)
}
}
Ora, con lldb, è possibile utilizzare po comando e stamperà oggetto come questo in console lldb,
<name: Jack, addresses: Helsinki,Tampere 0x60c000044860>
registrazione su file utilizzando TextOutputStream
struct MyStreamer: TextOutputStream {
lazy var fileHandle: FileHandle? = {
let fileHandle = FileHandle(forWritingAtPath: self.logPath)
return fileHandle
}()
var logPath: String = "My file path"
mutating func write(_ string: String) {
fileHandle?.seekToEndOfFile()
fileHandle?.write(string.data(using:.utf8)!)
}
}
Ora, utilizzando la stampa per lo streaming,
print("First of all", to: &myStream)
print("Then after", to: &myStream)
print("And, finally", to: &myStream)
Stampe su file:
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]])
}
}
Ora, nel debugger lldb, se si utilizza il comando Po,
> po person
risultato sarebbe qualcosa in questo modo,
▿ <name: Jack, addresses: Tampere Helsinki 0x7feb82f26e80>
- name : "Jack"
▿ address1 : Address
- city : "Helsinki"
▿ address2 : Address
- city : "Tampere"
Questo non funziona nel repl rapido e nel parco giochi. –
Inoltre non funziona per me in Xcode 7beta4. Chiamando 'print (" foo ", appendNewLine: false)' compila ma l'output è '(foo), false' e una nuova riga viene aggiunta comunque! – mluisbrown
@mluisbrown è 'appendNewline' (minuscolo' l') – JeremyP
In Swift 2.0 si può fare questo:
Versione base
print("Hello World")
result "Hello World\n"
Utilizzando terminatore
print("Hello World", terminator:"")
result "Hello World"
Utilizzando separatore
print("Hello", "World", separator:" ")
result "Hello World\n"
Utilizzando separatore e terminatore
print("Hello", "World", separator:" ", terminator:"")
result "Hello World"
Utilizzando una variabile
var helloworld = "Hello World"
print(helloworld)
result "Hello World\n"
Utilizzando due variabili
var hello = "Hello"
var world = "World"
print (hello, world)
result "Hello World\n"
Se volete stessa linea in loop:
for i in 1...4
{
print("", i, separator: " ", terminator:"")
}
print()
di uscita: 1 2 3 4
- 1. Stringa di stampa Haskell senza nuova riga
- 2. Shell MongoDB: stampa su console senza una nuova riga finale?
- 3. Stampa elementi della lista sulla nuova riga
- 4. NSLog senza nuova riga
- 5. print() senza una nuova riga in Dart?
- 6. Come disabilitare la stampa (spazio bianco/nuova riga) in XStream?
- 7. Come si stampa l'output senza una nuova riga finale in Rust?
- 8. variabili di stampa in pitone senza spazio o di nuova riga
- 9. Stampa NSData in Swift?
- 10. Lunga stringa PHP senza nuova riga
- 11. Stampa sulla stessa riga e non su una nuova riga in python
- 12. Stampa Windows% PERCORSO% con ogni voce sulla nuova riga
- 13. Stampa elenco senza parentesi in una riga singola
- 14. Copia negli appunti in PowerShell senza una nuova riga
- 15. Come posso stampare una nuova riga senza svuotare il buffer?
- 16. Modificare la stampa (oggetto) in Swift 2.0
- 17. Come spingere una nuova vista senza gli storyboard Swift
- 18. Nuova riga in Sql Query
- 19. Nuova riga in funzione python print()
- 20. bash printf con nuova riga
- 21. Stampa della vista in iOS con Swift
- 22. Unione di due file con cat senza nuova riga
- 23. Shell data "data" senza nuova riga alla fine
- 24. Stampa una pagina senza visualizzarla?
- 25. Come aggiungere una nuova riga a JLabel senza utilizzare l'HTML
- 26. Stampa su console senza flooding in C++
- 27. Nuova riga nell'attributo titolo?
- 28. Aggiunta di una nuova riga in iTextSharp
- 29. Inserire nuova riga in javascript stringa
- 30. PHP SimpleXML nuova riga
possibile duplicato di [? Come stampare per consolare utilizzando rapida parco giochi] (http://stackoverflow.com/questions/24003092/how-to-print-to-console -uso-rapido-parco giochi) –
@ DánielNagy Non è un duplicato perché swift 2.0 non ha una funzione println. Non sto chiedendo come stampare su console perché la funzione di stampa lo farà. Sto chiedendo "Come stampare su console senza la newline aggiunta al testo" –
Questo è esplicitamente documentato nelle note di rilascio della versione beta di Xcode 7: * "println e print sono stati uniti in una singola funzione di stampa con un argomento predefinito .. . "* –