Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@noppefoxwolf

Swiftの#lineと#columnについて

More than 1 year has passed since last update.

基本

#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使う

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
noppefoxwolf
きつねすき、にんげんこわい

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?