

省略記法を試していて

[code]

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

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


CC BY-SA 4.0
2018-11-28T13:23:51.557
50726
2018-12-03T11:16:51.083
2018-11-28T14:57:37.337
3054
31198
question
ruby
Ruby 省略記法の中身

[code]

    array1 = %w[あ い う]
    array2 = ["あ","い","う"]
    puts array1==array2
    #=>true
    
[/code]

<https://paiza.io/projects/IFZhiTCoZj-dFF_-crCK7A>  
となりました。


CC BY-SA 4.0
2018-12-03T07:07:01.140
50856
2018-12-03T07:17:06.003
2018-12-03T07:17:06.003
2383
27777
50726
answer


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

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

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

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


CC BY-SA 4.0
2018-12-03T11:10:35.480
50863
2018-12-03T11:16:51.083
2018-12-03T11:16:51.083
754
754
50726
answer