关于方法 "select" 和 "join"

About the method "select" and "join"

所以我之前发布了一个关于显示非素数因子的问题,并得到了这个作为解决方案。

下面是代码的一部分,但我在理解其中的一些术语时有点困难(因为我对 ruby 比较陌生)。

def factors(n)
   (1..n/2).select{|e| (n%e).zero?}.push(n)
 end

例如,

然后,

puts "#{n} is not a prime number =>#{factors(n).join(',')}"

.join(',') 有什么作用?

如果有人能用基本术语或简单概念向我解释这些术语,我将不胜感激。

select 方法过滤集合。您在块中指定条件(谓词)和匹配该条件的 select returns 个项目。

[1,2,3,4].select(&:even?)
 => [2, 4] 

i.zero?是另一种写法i == 0

[0,2,3,0].select(&:zero?)
 => [0, 0] 

join 方法将集合作为字符串连接起来,参数作为项目之间的分隔符

[0,2,3,0].select(&:zero?).join(' and ')
 => "0 and 0" 

备注

[1,2,3].select(&:even?) 

是比较简单的写法

[1,2,3].select { |item| item.even? }

我将尝试通过文档中的链接和文本进行解释

join()

Returns 通过将数组的每个元素转换为字符串创建的字符串,由给定的分隔符分隔。如果分隔符为 nil,则使用当前的 $,。如果分隔符和 $, 均为 nil,则使用空字符串。

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

select

Returns 包含 ary 的所有元素的新数组,给定块 returns 为真值。

如果没有给出块,则返回一个 Enumerator。

[1,2,3,4,5].select { |num|  num.even?  }   #=> [2, 4]

a = %w{ a b c d e f }
a.select { |v| v =~ /[aeiou]/ }  #=> ["a", "e"]

zero?

zero? → true or false
Returns true if num has a zero value.

Ruby html 文档:ruby-doc.org