줄 바꿈 없이 빠르게 인쇄하다
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>
Custom Debug String Convertible(커스텀 디버그 문자열 변환 가능)
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)
}
}
이제 lldb에서는 po 명령어를 사용할 수 있습니다.이 명령어는 lldb 콘솔에서 오브젝트를 다음과 같이 출력합니다.
<name: Jack, addresses: Helsinki,Tampere 0x60c000044860>
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)!)
}
}
이제, 인쇄물을 이용해 스트리밍을
print("First of all", to: &myStream )
print("Then after", to: &myStream)
print("And, finally", to: &myStream)
파일로 인쇄:
First of all
Then after
And finally
커스텀 리플렉터블
extension Person: CustomReflectable {
var customMirror: Mirror {
return Mirror(self, children: ["name": name, "address1": addresses[0], "address2": addresses[1]])
}
}
lldb 디버거에서는 명령어 po를 사용하면
> po person
결과는 이렇습니다.
▿ <name: Jack, addresses: Tampere Helsinki 0x7feb82f26e80>
- name : "Jack"
▿ address1 : Address
- city : "Helsinki"
▿ address2 : Address
- city : "Tampere"
Swift 2.0에서는 다음을 수행할 수 있습니다.
기본 버전
print("Hello World")
result "Hello World\n"
터미네이터 사용
print("Hello World", terminator:"")
result "Hello World"
구분 기호 사용
print("Hello", "World", separator:" ")
result "Hello World\n"
구분자 및 터미네이터 사용
print("Hello", "World", separator:" ", terminator:"")
result "Hello World"
하나의 변수 사용
var helloworld = "Hello World"
print(helloworld)
result "Hello World\n"
두 변수 사용
var hello = "Hello"
var world = "World"
print (hello, world)
result "Hello World\n"
같은 회선을 루프에 넣는 경우:
for i in 1...4
{
print("", i, separator: " ", terminator:"")
}
print()
출력: 1 2 3 4
let description = String(describing: yourVariable)
그description
여기서 변수는 를 사용하여 콘솔에서 얻을 수 있는 것과 동일한 출력을 유지합니다.print()
기능.
따라서 출력에 있는 모든 항목을 바꿀 수 있습니다.
예를 들어, 이 코드를 사용하여 JSON을 한 줄로 인쇄합니다.
print(description.replacingOccurrences(of: "\n", with: " "))
언급URL : https://stackoverflow.com/questions/30865233/print-without-newline-in-swift
'programing' 카테고리의 다른 글
리모트 Git 브랜치를 체크하려면 어떻게 해야 하나요? (0) | 2023.04.16 |
---|---|
배열을 인수로 Bash 함수에 전달하는 방법 (0) | 2023.04.16 |
kotlin에서 목록을 복제하거나 복사하는 방법 (0) | 2023.04.16 |
Bash 스크립트에서 sftp 명령을 비밀번호로 실행하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
.gitignore는 Git에 의해 무시됩니다. (0) | 2023.04.16 |