Ruby 初心者スレッド Part 46

このエントリーをはてなブックマークに追加
865デフォルトの名無しさん
>>862
pattern1とpattern2をそれぞれ"**\n**\n**", "--\n--\n--"だとすると、
linesすることで["**\n", "**\n", "**"], ["--\n", "--\n", "--"]というものが作れる(実際は配列じゃないけど便宜上)
["**\n", "**\n", "**"].zip(["--\n", "--\n", "--"])で返ってくるのは
[["**\n", "--\n"], ["**\n", "--\n"], ["**", "--"]]という配列の配列。
この大きな配列全体に対してcollect{|i| ... }すると、 i には["**\n", "--\n"]こういう配列が入る。

二回目のcollectや最初のjoinはこの小さい配列に対するもので、"**\n"と"--\n"から改行を取り除いた上でjoinして
"**--"こういう文字列にする。

これを繰り返して全体のcollectが済んだ時点で
["**--", "**--", "**--"]という感じの配列が返ってくるからjoin("\n")で間に改行を挟みながら連結すると

"**--\n**--\n**--"
**--
**--
**--

つまり
"**\n**\n**"
**
**
**

"--\n--\n--"
--
--
--
を横に連結したものが返ってくる、って寸法。