【问题标题】:About the method "select" and "join"关于方法“选择”和“加入”
【发布时间】:2017-03-03 10:18:38
【问题描述】:

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

下面是代码的一部分,但是我在理解其中的一些术语时有点麻烦(因为我对 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(',') 有什么作用?

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

【问题讨论】:

  • 您是否尝试在文档中查找这些方法?
  • 如果您能告诉我们,您对这些方法的文档有哪些确切不了解,将会有所帮助,以便文档的作者可以改进它。

标签: ruby methods definition


【解决方案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? }

【讨论】:

    【解决方案2】:

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

    join()

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

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

    select

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

    【讨论】:

    • 好吧,仅链接的答案没有用。要么作为评论发布,要么详细说明,以便当/如果链接失效时您的答案仍然有意义。
    猜你喜欢
    • 2011-05-02
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多