2016-06-28 6 views
1

Kann jemand mir bitte erklären, warum die Ruby-Funktion .times schwierig wirdwarum .times wird schwierig - Rubin

str.chars.map{|letter| num.times{letter.next}} 

ist nur die Nummer (num) für jedoch viele Briefe waren im Wort produzieren statt jeden Buchstaben das Alphabet (.next) so oft zu bewegen. Ich weiß, es scheint einfach, aber von dem, was ich von .times verstehe, ist dies der Weg, es zu verwenden, aber so etwas ist passiert many.times .... das war ein Witz.

Antwort

1

num.times gibt den Wert num zurück. Sie sollten so etwas wie unten verwenden:

str.chars.map{|letter| num.times{ letter = letter.next }; letter } 
+2

'('letter'.ord + num) .chr' – mudasobwa

0

Ja ich so etwas wie

def caesar_up(string, n) 
    string.chars.map { |char| (char.ord + n).chr }.join 
end 

Dann ist es wie caesar_up("MOM", 2) verwenden tun würde "OQO"

+0

Aus mudasobwas Kommentar – Luke

0
> 'abc'.chars.map{|c| c.tap { 3.times{c.next!} } }.join 
=> "def" 

oder vielleicht

3.times.inject(letter){|a,_| a.next} 
zu erhalten

aber keiner ist sehr gut lesbar.