신속하게 줄 바꿈없이 인쇄
swift 2.0에서는 print()
자동으로 개행 문자를 추가합니다. 신속한 1.2, println()
및 print()
개별 기능 사용. 그래서 swift는 더 이상 줄 바꿈을 추가하지 않는 인쇄 기능이 없기 때문에 텍스트를 인쇄하고 줄 바꿈을 추가하지 않는 방법은 무엇입니까?
Swift 2.0부터 개행없이 인쇄하는 권장 방법은 다음과 같습니다.
print("Hello", terminator:"")
print
기능은 Swift 의 후반 개정 이후 완전히 변경 되었으므로 이제 훨씬 간단 해 보이며 표준 콘솔에 인쇄 할 수있는 다양한 방법이 있습니다.
인쇄를위한 메서드 서명은 다음과 같습니다.
public func print<Target>(_ items: Any..., separator: String = default, terminator: String = default, to output: inout Target) where Target : TextOutputStream
여기 몇 가지 사용 사례가 있습니다.
print("Swift is awesome.")
print("Swift", "is", "awesome", separator:" ")
print("Swift", "is", "awesome", separator:" ", terminator:".")
인쇄물:
Swift is awesome.
Swift is awesome
Swift is awesome.
연결
print("This is wild", terminator: " ")
print("world")
인쇄물:
This is wild world
따라서 터미네이터를 사용하면 내용이 같은 줄과 관련이 있는지주의해야합니다.
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)
인쇄물:
<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)
}
}
Now, with lldb, you can use po command and it will print object as this in lldb console,
<name: Jack, addresses: Helsinki,Tampere 0x60c000044860>
Logging to file using 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)!)
}
}
Now, using print to stream,
print("First of all", to: &myStream )
print("Then after", to: &myStream)
print("And, finally", to: &myStream)
Prints to 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]])
}
}
Now, in lldb debugger, if you use command po,
> po person
Result would be something like this,
▿ <name: Jack, addresses: Tampere Helsinki 0x7feb82f26e80>
- name : "Jack"
▿ address1 : Address
- city : "Helsinki"
▿ address2 : Address
- city : "Tampere"
In Swift 2.0 you can do this:
Basic version
print("Hello World")
result "Hello World\n"
Using terminator
print("Hello World", terminator:"")
result "Hello World"
Using separator
print("Hello", "World", separator:" ")
result "Hello World\n"
Using separator and terminator
print("Hello", "World", separator:" ", terminator:"")
result "Hello World"
Using one variable
var helloworld = "Hello World"
print(helloworld)
result "Hello World\n"
Using two variables
var hello = "Hello"
var world = "World"
print (hello, world)
result "Hello World\n"
If you want same line in loop:
for i in 1...4
{
print("", i, separator: " ", terminator:"")
}
print()
Output: 1 2 3 4
참고URL : https://stackoverflow.com/questions/30865233/print-without-newline-in-swift
'Programing' 카테고리의 다른 글
ASP.NET MVC의 ViewBag 작동 방식 (0) | 2020.08.30 |
---|---|
전체 줄이 일치하는 경우에만 grep을 일치시키는 방법은 무엇입니까? (0) | 2020.08.29 |
반올림하지 않고 소수점 두 자리 자르기 (0) | 2020.08.29 |
EditText에서 오류 제거 (0) | 2020.08.29 |
scp를 사용하여 dir을 재귀 적으로 복사 할 때 파일을 필터링하는 방법은 무엇입니까? (0) | 2020.08.29 |