比较Rebol 3中的字符

bee*_*ill 5 unicode rebol character codepoint rebol3

我想比较字符,看看它们是否匹配.我无法弄清楚为什么它不起作用.我期待true输出,但我变得虚假.

character: "a"
word: "aardvark"

(first word) = character ; expecting true, getting false
Run Code Online (Sandbox Code Playgroud)

Hos*_*ork 5

所以"a"在Rebol中不是一个字符,它实际上是一个字符串.

单个unicode字符是它自己的独立类型,具有自己的文字语法,例如#"a".例如,它可以从INTEGER来回转换!获取一个代码点,单字母字符串"a"不能:

>> to integer! #"a"
== 97

>> to integer! "a"  
** Script error: cannot MAKE/TO integer! from: "a"
** Where: to
** Near: to integer! "a"
Run Code Online (Sandbox Code Playgroud)

字符串不是一系列单字符STRING!s,它是一系列CHAR!.所以你想要的是:

character: #"a"
word: "aardvark"

(first word) = character ;-- true!
Run Code Online (Sandbox Code Playgroud)

(注意:有趣的是,单个字符串和该字符的二进制转换将是等效的:

>> to binary! "?"
== #{CEBC}

>> to binary! #"?"
== #{CEBC}
Run Code Online (Sandbox Code Playgroud)

......那些是UTF-8字节表示.)