0

文字列のブロックを受け取り、文字列を処理してから、文字列を含む配列を返す関数を作成することはできますか?

def collect_string(&block)
   # just toss them into an array and return it
   return ...
end

a = collect_string {
   "string 1"
   "string 2"
   "string 3"
}

私が何であるかを印刷するときa、私は得るべきです

["string 1", "string2", "string3"]

今、私が考えを変えることに決めて、最初に弦でもっと何かをしたいと思ったとしましょう。最初にすべての母音を削除するか、最初の3文字だけを取得したいのかもしれません。

4

1 に答える 1

0

これは実際にはブロックの目的ではありません。とにかく文字列の配列を作成するので、最初に配列を使用してみませんか?

def collect_string &block
  v = block.call
  # do something with v
end

# block returning array
a = collect_string {[
   "string 1",
   "string 2",
   "string 3"
]}

例のようにブロックを使用すると、最後に評価された式である「文字列3」のみが返されます。以前の文字列は失われます。

于 2012-07-11T20:22:10.380 に答える