2017-03-03 31 views
-1

所以我之前發佈了一個關於顯示非素數的因子的問題並將其作爲解決方案。關於「選擇」和「加入」的方法

下面是代碼的一部分,但我在理解其中的一些術語時遇到了一些麻煩(因爲我對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(',')}" 

是什麼。加入( '')嗎?

如果有人能夠用基本術語或簡單概念向我解釋這些術語,將不勝感激。

+1

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

+1

你嘗試尋找那些方法了在文檔? –

+1

如果你能告訴我們,這將有所幫助,你不明白這些方法的文檔,這樣文檔的作者就可以改進它。 –

回答

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

我將嘗試按照從文檔

join()

鏈接和文本解釋更簡單的方法返回數組中的每個元素轉換爲字符串創建一個字符串,由給定的分隔符分隔。如果分隔符爲零,則使用當前$ ,.如果分隔符和$都是零,則它使用空字符串。

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

select

返回包含所述給定塊返回一個真值進制中的所有元素的新數組。

如果沒有指定塊,則返回一個枚舉器。

[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. 

紅寶石HTML文檔:ruby-doc.org

+1

那麼,只有鏈接的答案是沒有用的。或者發表評論或者詳細說明,以便當/如果鏈接失效時,您的答案仍然有意義。 –