1. ホーム
  2. syntax

[解決済み] にはどんな意味があるんだろう?

2022-02-19 12:29:07

質問

関数挿入の例は、次のように示される。

(with-temp-buffer
  (insert "hello" ?\s "world" ?\n)
  (buffer-string))

とは何ですか? ? の意味は?

どのように解決するのですか?

?\s?\n 文字の読み上げ構文 . 1 つ目はスペース文字の読み取り構文で、2 つ目は文字 NEWLINE (コントロール J とも呼ばれ、時々 ^J ここで ^J は改行文字である。

Emacs Lispでは文字は正の整数です。これらはASCIIコード(値)を数字で書くことができ、そのように書くとLispリーダで読むことができるようになります。 32\s ) と 10 (の場合 \n ). しかし、Elispでは、文字読み取り構文として ? という文字があり、この2つの文字にはそれぞれ ? の構文があります。その他の普通の文字には、接頭辞として ? : ?s は文字として読まれます s であり、かつ ?@ は文字として読みます。 @ .

? を読む構文は、より読みやすい 人間にとって を使用する場合、整数値だけを使用するよりも 115?s ) と 64 に対して ?@ . しかし、常に整数値だけを使うこともできます。 の整数値です。

あなたの例です。 (insert "hello" ?\s "world" ?\n) . 機能 insert は文字列と文字列を引数にとります。この場合,文字列 "hello" 文字 ?\s (スペース文字), 文字列 "world" および文字 ?\n (改行文字、コントロールJ)。

Elispマニュアル参照、ノード 文字列の基本構文 .