Ruby 省略記法の中身


省略記法を試していて

[code]

    array１ = %w[あ　い　う]
    array2 = ["あ","い","う"]
    puts array == array2
    
[/code]

を実行したら`false`が帰ってきました。  
省略記法を使うと中身が変わってしまうのでしょうか？




ruby (少なくとも MRI)では、構文上特殊な意味合いを持ちうる文字列は、すべて ASCII
文字である様子です。(下のリンクで定義される関数などを用いて、 parse.y は記述される)

<https://github.com/ruby/ruby/blob/a8812080c4977c2731e8ff1b129b59d236bc12e3/include/ruby/ruby.h#L2220>

その意味で、全角スペースはとくに構文的な意味を与えられているわけではなく、なのでひとつの文字列 `あ い う` として ruby
の構文解析は動いていたと思われます。(なので、最終的に `array1` は `["あ い う"]` という長さ１の配列としてパースされた模様)

それ以外は、他の方が解説している通りです。

