2016-09-20 2 views
7

.charsの私の理解は"the number of characters in the string in graphemes"を返すということです。 .ordsの私の理解は、それが"a list of codepoint numbers, one for the base character of each grapheme in the string"を返すということです。つまり、.charsは書記素数を返し、.ordsは書体ごとに1つのコードポイント(基数)を返します。しかし、私はMoarVM 2016.07にRakudo 2016年7月1日で見てい動作がそれと一致していないようです:.ordsは.charsに同意しないのはなぜですか?

> "\x[2764]\x[fe0e]".chars 
1 
> "\x[2764]\x[fe0e]".ords.fmt("U+%04x") 
U+2764 U+fe0e 
> "e\x[301]".ords.fmt("U+%04x") 
U+00e9 
> "0\x[301]".ords.fmt("U+%04x") 
U+0030 

.chars方法はHEAVY BLACK HEARTとVARIATION SELECTOR-15のための期待1(テキスト表現を返します。 ❤︎ではなくemoji❤️、U + 2764 U + fe0f)、.ordsは、ベースではなく両方のコードポイントを返します(私はちょうどU + 2764を期待していました)。もっと紛らわしいことに、LATIN SMALL LETTER EとACUTE ACCENTとの組み合わせで.ordsと呼ぶと、U + 00e9(ラテン小文字のEを急に)に戻ります。私はLATIN SMALL LETTER Eがベースコードポイントであるため、U + 0065を期待していました。文字列のNFCバージョンがない場合(例えば、0の場合はU + 0030)、期待される結果を返す。

.chars.ordsの私の理解はちょうど間違っていますか、これはバグですか?

+0

バグのようです。 – nwellnhof

答えて

7

文書化.ordsメソッドに関するバグ。コア開発者の一つは、ちょうどこのコミットでドキュメントを更新しました:すぐにサイトに表示されます

https://github.com/perl6/doc/commit/12ec5fc35e

を。

関連する問題