关于方法“选择”和“加入”

时间:2017-03-03 10:18:39

标签: ruby methods definition

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

以下是代码的一部分,但我在理解其中的一些术语方面有点麻烦(因为我对ruby相对较新)。

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

例如,

  • 方法选择一般做什么?
  • .zero是什么?办?

然后,

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

.join(',')做什么?

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

2 个答案:

答案 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)

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

join()

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

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

select

返回一个新数组,其中包含给定块返回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?

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

Ruby html文档:ruby-doc.org