2015-08-07

Emacs-Lisp の insert は数字を直接出力できない

Emacs-Lisp で次のようなコードを書いたところエラーになった。

(insert 100000000)
wrong-type-argument: char-or-string-p 100000000

数字を出力するには number-to-string で文字列に変える必要がある。

(insert (number-to-string 100000000))
100000000

数字は char

insert に数字を引数として与えると、char の文字コードを渡したのと同じになる。例えば、ASCII コードの文字「a」は文字コードで「97」なので

(insert 97)
a

このようになる。Emacs は ?文字 を評価すると文字コードが分かる。試しに ?安 を評価したら 23433 だった。これを insert してみる。

(insert 23433)

「安」が出力された。想定通り。

あとがき

今回、数字を insert しようとしてエラーになった。これは数字が大きかったから。数字が小さかったら、意図しない「文字」が出力されて、気付かなかったかもしれない。気をつけよ。

No comments:

Post a Comment