2017-03-03 2 views
-1

alors j'ai posté une question plus tôt sur l'affichage des facteurs de nombres non-premiers et a obtenu cela comme une solution. Ci-dessous est une partie du code, mais j'ai un peu de mal à comprendre quelques termes en eux (puisque je suis relativement nouveau à ruby).A propos de la méthode "select" et "join"

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

Par exemple,

  • Qu'est-ce que la méthode select faire en général?
  • Qu'est-ce que .zero? faire?

Ensuite,

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

Qu'est-ce que .join ('') faire?

Il serait grandement apprécié que quelqu'un puisse m'expliquer ces termes en termes simples ou concepts simples.

+1

Voir http://ruby-doc.org/core-2.4.0/ –

+1

avez-vous essayé regarder ces méthodes dans le Documentation? –

+1

Il serait utile si vous pouviez nous dire, ce que * précisément * vous ne comprenez pas sur la documentation de ces méthodes, afin que les auteurs de la documentation puissent l'améliorer. –

Répondre

1

select Cette méthode filtre une collection. Vous spécifiez la condition (le prédicat) dans le bloc et select renvoie les éléments qui correspondent à cette condition.

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

i.zero? est une autre façon d'écrire i == 0

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

méthode join concaténer une collection comme une chaîne avec le paramètre comme séparateurs entre les éléments

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

Remarque

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

est un moyen plus simple d'écrire

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

je vais essayer d'expliquer en suivant les liens et les textes de la documentation

join()

Renvoie une chaîne créée par la conversion de chaque élément du tableau à une chaîne , séparé par le séparateur donné. Si le séparateur est nul, il utilise $ ,. Si à la fois le séparateur et $ sont nuls, il utilise une chaîne vide.

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

select

Renvoie un nouveau tableau contenant tous les éléments d'aire pour lesquels le bloc donné renvoie une valeur réelle.

Si aucun bloc n'est donné, un énumérateur est renvoyé à la place.

[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 documentation html: ruby-doc.org

+1

Eh bien, les réponses de type lien uniquement ne sont pas utiles. Soit poster comme un commentaire, ou élaborer, de sorte que votre réponse a encore du sens quand/si les liens disparaissent. –