2012-07-11 96 views
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个字符。

回答

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”,最后一个表达式被评估。以前的字符串丢失。

+0

我在想也许我的collect_string方法可能需要一些选项来格式化一组字符串,然后我可以传入一个块中的实际字符串。我总是可以将它们全部设置为参数,但我期待着看到我想要做的事情。 – MxyL 2012-07-11 20:34:31

+0

@Keikoku你可以传递一个块,但是返回一个数组,而不是原始字符串。 – 2012-07-11 20:36:33

+0

将数组传递给块是很好的。我正在查看Proc文档,但我不确定如何实际获取数组并使用其元素进行操作。 – MxyL 2012-07-11 20:50:47

相关问题