Char! データ型

1. 概要

char! 型の値はユニコードのコードポイントを表します。それは16進数00から10FFFFまでの範囲の整数値(10進数だと0から1,114,111)です。

2. 特徴

char! は「ダイレクト」で「アトミック」で「受動的」です。

Note: これは型の特徴をドキュメントとして事前に仮定したものです。

3. 生成

char! の値が生成されるのは次の3つの場合です。リテラルを使った時、実行時に「make」コンストラクタを使った時、「to」関数またはその他の string! 値を char! 値に展開する関数を使った時。

3.1. リテラルシンタックス

char! のベーシックなリテラルフォーマットは以下です。

#"<character>"
<character> : 1つのユニコードコードポイントを示すUTF-8エンコーディング

リテラルシンタックスは通常タイプできない制御文字のための「エスケープ文字」もサポートしています。

Redのエスケープ文字は '^' 、コードポイントはU+005Eです。結果として、文字として '^' を使用する場合はエスケープが必要です。そのコードポイントとして文字列リテラルを使う場合、 #"^" ではなく #"^^" になります。実際のところ、 #"^" は無効な値です。

Redには3種類のエスケープ文字の形式があります。1つは数値のコードポイント、もう一つが「名前付き文字」、最後が「制御文字」です。

コードポイントの形式は以下です。

#"^(<codepoint>)"
<codepoint> : 有効な16進数値。例) 00、ABCD、10FFFFF

「制御文字」の形式は以下です。

#"^<cc>"
<cc> : 右記のセットの中の1文字 - A-Z, [, \, ], _
Table 1. エスケープされた制御文字

エスケープされた制御文字

コードポイント

#"^A" - #"^Z"

U+0001 - U+001A.

#"^["

U+001B

#"^\"

U+001C

#"^]"

U+001D

#"^_"

U+001F

「名前付き文字」の形式は以下です。

#"^(<name>)" or #"^<symbol>"
<name> : 名前付きエスケープ文字テーブルの中の名前
<symbol> : 名前付きエスケープ文字テーブル内のシンボル
Table 2. 名前付きエスケープ文字

名前

シンボル

文字

コードポイント

#"^(null)

#"^@"

null

U+0000

#"^(back)"

backspace

U+0008

#"^(tab)"

#"^-"

horizontal tab

U+0009

#"^(line)"

#"^/"

line feed

U+000A

#"^(page)"

form feed

U+000C

#"^(esc)"

escape

U+001B

#"^(del)"

#"^~"

delete

U+007F

#"^""

" - double quote

U+0022

#"^^"

^ - caret

U+005E

4. 比較

右記の全ての比較演算子がchar!の値に使用できます:「=, ==, <>, >, <, >=, <=, =?」。加えて、minmaxsortがサポートされます。char! 値の比較は大文字・小文字を区別します。

#"a" = #"A"
== false
#"a" =? #"a"
== true
max #"a" #"A"
== #"a"
sort [#"c" #"b" #"d" #"a"]
== [#"a" #"b" #"c" #"d"]

5. 算術処理

全ての数学的関数が char! の値に使用できます。計算結果が 00 - 10FFFF(16進数)の範囲外となる場合、 Math Error のエラーが挙げられます。

#"a" + 1
== #"b"
#"a" - 32
== #"A"
#"a" * 256
== #"愀"
#"a" - 98
*** Math Error: math or number overflow
*** Where: -
*** Stack:

6. その他のchar!に関する関数

Lowercase, Uppercase

results matching ""

    No results matching ""