-1

我知道 join 方法(例如 array.join(" ") 或 array.join("_")),它将把数组的元素(或者我相信是哈希)放在一起。但是,我遇到了一个我一直在研究的问题的解决方案示例,它看起来像这样:

def find(hash_key)
    @options.select { |key,value| key.scan(hash_key).join == hash_key }
end

在 .join == hash_key 部分之前,我完全理解它。

有人可以向我解释一下吗:D

4

2 回答 2

4
@options.select {

这将选择@options...中的项目

key.scan(hash_key).join == hash_key

哪里key.scan(hash_key).join等于hash_key

这也可以更清楚地写成:

@options.select { |key,value| key.scan(hash_key).join() == hash_key }

(如果join未提供参数,则假定""为(空字符串)。

于 2013-09-19T20:47:07.287 回答
0

来自ruby​​-doc.org

join(separator=$,) → str
Returns a string created by converting each element of the array to a string, separated by the given separator. If the separator is nil, it uses current $,. If both the separator and $, are nil, it uses empty string.

[ "a", "b", "c" ].join        #=> "abc"
[ "a", "b", "c" ].join("-")   #=> "a-b-c"

http://zenspider.com/Languages/Ruby/QuickRef.html说这$,是“打印的输出字段分隔符和 Array#join。默认为 nil。”。

于 2013-09-19T23:05:14.697 回答