leaning diary Rails

【Learning Diary39】ユビキタス/zip/%Q /%q/ヒアドキュメント

【Learning Diary39】ユビキタス/zip/%Q /%q/ヒアドキュメント

ユビキタス(ubiquitous)

ユビキタスとは、「偏在する」という意味がある英語です。

 

ユビキタス・コンピューティングとは、生活の至る所にコンピューターが存在し、いつでもどこでも情報にアクセスできる環境のことを言うそうです。

 

以下参考にさせていただきました。

 

参照:wiki ユビキタス

 

参照:ユビキタスコンピューティングとは

 

複数の配列を並行処理するメソッド「zip]

 

zipは、自身と引数に渡した配列の各要素からなる配列の配列を生成して返すメソッドです。

 

生成される配列は自身の要素の数と等しくなります。

 

以下の例では自身と引数の要素[0]同士が加算され、配列に追加される繰り返しです。

 

要素ごとの合計が格納された配列が返却されます。

 

ary1 = [1,2,3,4,5]
ary2 = [10,20,30,40,50]
ary3 = [100,200,300,400,500]

result = []
ary1.zip(ary2,ary3) do |a,b,c|
  result << a + b + c
end

p result  #= [111, 222, 333, 444, 555]

 

配列の要素数が異なっている場合は、レシーバの要素の数になります。

 

>> p [1,2].zip([:a,:b,:c], [:A,:B,:C,:D])
[[1, :a, :A], [2, :b, :B]]
=> [[1, :a, :A], [2, :b, :B]]

 

このメソッドを活用すると、横に昇順の配列を立てに昇順と並び替えることもできます。

 

>> p [1,2,3].zip([4,5,6], [7,8,9]) { |ary| p ary }
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
nil
=> nil

 

参照:instance method Array#zip

 

Stringクラスを作成する %Q / %q

 

「"や「'」を含めた文字列を作りたいときは、「\"」や「\'」といった特殊文字を使うより、%Q や %q を使うほうが入力が楽です。

 

>> desc = %Q(Rubyの文字列には「''」も「""」も使われます)
=> "Rubyの文字列には「''」も「\"\"」も使われます"
>> str = %q|Ruby said, 'Hello world!'|
=> "Ruby said, 'Hello world!'"
>> puts desc
Rubyの文字列には「''」も「""」も使われます
=> nil
>> pp desc
"Rubyの文字列には「''」も「\"\"」も使われます"
=> "Rubyの文字列には「''」も「\"\"」も使われます"
>> puts str
Ruby said, 'Hello world!'
=> nil
>> pp str
"Ruby said, 'Hello world!'"
=> "Ruby said, 'Hello world!'"
>>

 

ヒアドキュメント

Unixのシェルに由来する記法です。

 

<<を使って文字列を作ります。

 

終了の記号としては「EOF」や「EOB」をよく使います。

 

EOF:End of Fileの略

EOB:End of Blockの略

<< "終了の記号"
置き換える文字列
終了の記号

 

-leaning diary, Rails