5
4

5 に答える 5

3

OK、私の冗談の答えはうまくいきませんでした。

このメーリング リストの質問と Matz からの回答は、Ruby 1.9 の組み込みString#upcaseおよびString#downcaseメソッドが ASCII 文字のみを処理することを示しています。

自分でテストしなくても、これは、ソース コード内のすべての非 ASCII 文字が小文字と見なされる可能性が高いことの強力な証拠だと思います。

誰かが最新の 1.9 をダウンロードしてコンパイルして見ることはできますか?

于 2008-08-25T02:47:49.070 に答える
2

ソースコードで拡張 UTF8 文字を識別子として使用した場合、ruby がどうするかはわかりませんが、私ならどうするかはわかります。

于 2008-08-23T03:56:32.133 に答える
1

私が見てみたいです

my_proc = λ { |...| ... }

x ∈ my_enumerable  # same as my_enumerable.include?(x)

my_infinite_range = (1..∞)

return 'foo' if x ≠ y

2.21 ≈ 2.2

誰かがそのプログラムを英語のキーボードでタイプしようとしているのを見たいです:P

于 2008-08-25T03:07:52.077 に答える
1

Ruby 1.9.2-p0 (YARV)では、結果は元の投稿と同じです (つまり、Foo::bar #=> # NoMethodError: undefined method 'bar' for Foo:Module)。また、残念ながらアクセント付きの文字は上下とは見なされず、関連するメソッドは結果を生成しません。

例:

"á".upcase
=> "á"
"á" == "Á".downcase
=> false
于 2010-12-15T16:01:47.543 に答える
0

IRB で UTF-8 文字を受け入れることができないため、テスト スクリプト ( /tmp/utf_test.rb) を使用しました。

「λ」は変数名として正常に機能します。

# encoding: UTF-8
λ = 'foo'
puts λ

# from the command line:
> ruby -KU /tmp/utf_test.rb
foo

"λ" はメソッド名としてもうまく機能します:

# encoding: UTF-8
Kernel.class_eval do
  alias_method :λ, :lambda
end

(λ { puts 'hi' }).call

# from the command line:
> ruby -KU /tmp/utf_test.rb:
hi

ただし、定数としては機能しません。

# encoding: UTF-8
Object.const_set :λ, 'bar'

# from the command line:
> ruby -KU /tmp/utf_test.rb:
utf_test.rb:2:in `const_set': wrong constant name λ (NameError)

大文字のバージョンもありません:

# encoding: UTF-8
Object.const_set :Λ, 'bar'

# from the command line:
> ruby -KU /tmp/utf_test.rb:
utf_test.rb:2:in `const_set': wrong constant name Λ (NameError)

私の疑いでは、定数名は大文字の ASCII 文字で始まる必要があります (一致する必要があり/^[A-Z]/ます)。

于 2009-09-16T18:54:35.850 に答える