所以我之前发布了一个关于显示非素数因子的问题,并将其作为解决方案。
以下是代码的一部分,但我在理解其中的一些术语方面有点麻烦(因为我对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(',')做什么?
如果有人能够用基本术语或简单的概念向我解释这些术语,将不胜感激。
答案 0 :(得分:1)
select
方法过滤集合。您在块中指定条件(谓词),select
返回与该条件匹配的项目。
[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? }
答案 1 :(得分:1)
我将尝试通过以下文档中的链接和文本进行解释
返回通过将数组的每个元素转换为字符串而创建的字符串,由给定的分隔符分隔。如果分隔符为nil,则使用当前$,。如果separator和$都是nil,则使用空字符串。
[ "a", "b", "c" ].join #=> "abc"
[ "a", "b", "c" ].join("-") #=> "a-b-c"
返回一个新数组,其中包含给定块返回true值的所有ary元素。
如果没有给出阻止,则返回枚举器。
[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? → true or false
Returns true if num has a zero value.
Ruby html文档:ruby-doc.org