resumen libro latino fahrenheit español bradbury audiolibro analisis swift swift3 swift2

swift - libro - imprimir sin nueva línea en rápido



fahrenheit 451 ray bradbury (4)

En swift 2.0, print() agrega automáticamente un carácter de nueva línea. En swift 1.2, println() e print() solían ser funciones separadas. Entonces, ¿cómo imprimo un texto y no le agrego una nueva línea, ya que swift ya no tiene una función de impresión que no agregue nuevas líneas.


A partir de Swift 2.0, el método recomendado para imprimir sin nueva línea es:

print("Hello", terminator:"")


En Swift 2.0 puedes hacer esto:

Versión básica

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

Usando terminador

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

Usando separador

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

Usando separador y terminador

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

Usando una variable

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

Usando dos variables

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


Si desea la misma línea en bucle:

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

Salida: 1 2 3 4


print función de print ha cambiado completamente desde la revisión tardía de Swift , ahora parece mucho más simple y hay una variante de método para imprimir en la consola estándar.

La firma del método para imprimir se ve más o menos así,

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

Y aquí hay algunos casos de uso,

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

Huellas dactilares:

Swift is awesome. Swift is awesome Swift is awesome.

Concatenando

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

Huellas dactilares:

This is wild world

Por lo tanto, al usar el terminador, debe tener cuidado de que el contenido sea relevante para la misma línea.

Imprimir objeto 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)

Huellas dactilares:

<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) } }

Ahora, con lldb , puede usar el comando po e imprimirá un objeto como este en la consola lldb,

<name: Jack, addresses: Helsinki,Tampere 0x60c000044860>

Iniciar sesión en el archivo usando 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)!) } }

Ahora, usando print para transmitir,

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

Impresiones para archivar:

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]]) } }

Ahora, en el depurador lldb, si usa el comando po,

> po person

El resultado sería algo como esto,

▿ <name: Jack, addresses: Tampere Helsinki 0x7feb82f26e80> - name : "Jack" ▿ address1 : Address - city : "Helsinki" ▿ address2 : Address - city : "Tampere"