Swiftには標準出力関数がいくつか用意されているのでその違いについてまとめます。
print
- 一般的な標準出力関数
- 値をカンマ区切りで渡せる 1
- e.g.
print(1.0, 2.0, 3.0, 4.0, 5.0)
- e.g.
- カンマ区切りで渡した値を出力するときの区切り文字を指定できる 1
- e.g.
print(1.0, 2.0, 3.0, 4.0, 5.0, separator: " ... ")
- e.g.
- 終端文字を指定できる 1
- デフォルト値は改行文字
/n
- 最後に改行したくないときは空文字
""
を指定する- e.g.
print(1.0, terminator: "")
- e.g.
- デフォルト値は改行文字
debugPrint
-
print
より詳しい情報を出力するとされる 2 が、printと変わらない場合が多い - Xcodeの リリース用ビルドでも出力される ので注意 3
-
print
と同様、カンマ区切りで値を渡したり区切り文字や終端文字を指定できる 2
dump
出力例
Range
let range = 1...5
print(range)
// 1...5
debugPrint(range)
// CountableClosedRange(range)
dump(range)
// ▿ CountableClosedRange(range)
// - lowerBound: 1
// - upperBound: 5
Array & Dictionary
let array: [Any] = [1, 2, ["a": 3, "b": 4]]
print(array)
// ["b": 2, "a": 1]
debugPrint(array)
// ["b": 2, "a": 1]
dump(array)
// ▿ 2 key/value pairs
// ▿ (2 elements)
// - .0: "b"
// - .1: 2
// ▿ (2 elements)
// - .0: "a"
// - .1: 1
UIView
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
print(view)
// <UIView: 0x7f815d4055f0; frame = (0 0; 100 100); layer = <CALayer: 0x60800003b220>>
debugPrint(view)
// <UIView: 0x7f815d4055f0; frame = (0 0; 100 100); layer = <CALayer: 0x60800003b220>>
dump(view)
// - <UIView: 0x7f815d4055f0; frame = (0 0; 100 100); layer = <CALayer: 0x60800003b220>> #0
// - super: UIResponder
// - super: NSObject
雑感
普段良く使うのは print
だと思いますが、状況によっては debugPrint
や dump
を試してみるのも良いと思います。
とにかく詳しい情報を見たいときは dump
を使ってみるのが良さそうです。
環境
$ swift --version
Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9
-
print(_:separator:terminator:) - Swift Standard Library | Apple Developer Documentation ↩ ↩2 ↩3
-
debugPrint(_:separator:terminator:) - Swift Standard Library | Apple Developer Documentation ↩ ↩2
-
Swift Log - Devil or Why print is dangerous – iOS App Development – Medium ↩
-
Shaps さんのツイート: "ProTip: Why debug with `print` when you can `dump`? `dump` uses Mirror for introspection. #swift #iosdev #protip #xcode https://t.co/jAdCX3AJc6" ↩
-
[Swift] リフレクションを利用してEnumのcase名を文字列として利用する方法 | iOS Programming [CAPH TECH] ↩