基本
#lineはコード上の行番号、#columnはコード上の列番号を示す
let res1 = #line
let res2 = #column
print(res1) // 1
print(res2) // 12
行番号は1から数えるので、ファイルの先頭で#lineを呼んでいる場合は1になる。
列番号も同様に、1から数える。上の例では#の位置は12文字目なので12になる
列番号がおかしくなる時
let res1 = #line
let res2あ = #column
print(res1) // 1
print(res2あ) // 15
上の例の変数名res2
に平仮名を一文字足してres2あ
としてみた。
結果は15になる。
基本の項では、行番号と解説したが#columnの実態はutf8のバイト数である。
"let res2あ = #".utf8.count //15
#columnまでの文字をutf8にして数えると、#columnがいくつを指すか調べることができる。
(上の例では#を含めて#columnが返す値を計算している)
utf8とは
いろんな文字を表現するために、人間の読む文字とコンピュータの読む文字の対応表で変換する方式みたいなもの。
例えば上の例で出てきた「あ」は「E3 81 82」で3byte使う