【发布时间】:2014-11-13 07:25:40
【问题描述】:
我认为这很简单,但是当涉及到这个案例时,我无法做到。我觉得如果我能理解这一点,我会对 Ruby 有更好的理解。
什么:我想在字符串和整数的二维数组中搜索,并返回找到某个字符串的索引/索引。每个子数组的这些索引也将按照相应子数组的顺序放置在一个数组中。
搜索字符串“a”时的示例:
输入数组: [[1,"a","a",3],[1,"b"],["a",2] ]
输出数组: [[1,2],[],[0]]
我尝试了什么: 直觉上我认为它会是这样的:
source = [[1,"a","a",3],[1,"b"],["a",2]]
与
source.each.each_index.select { |v| v == "a" }
或
source.each {|x| x.each_index.select { |i| x[i] == "a" }}
问题:
1) 我应该调用什么来从输入数组中获取输出数组?
2) 我看到很多其他的枚举器和方法都是这样混在一起的,为什么我不能这样做呢?我不想用我尝试过的一些更简单的测试用例来混淆这个问题,但是我要么遇到未定义的方法错误,要么它只会返回我的源数组。
3) 它与哪些块与哪些方法相关联有关吗?我在回答问题后对我的代码进行了建模:Find indices of elements that match a given condition 我很困惑为什么该块似乎与多种方法直接关联。换句话说,|i|来自#each_index,而布尔值来自#select。现在对我来说似乎是随机且杂乱无章的,如何构建这些块(即为什么不反过来呢?)。
【问题讨论】:
标签: ruby arrays multidimensional-array