2016-08-05 21 views
0

Ich bin neu zu Fabrik Mädchen und ich habe ein Objekt der Klasse Foo, die eine Attributleiste hat, die eine Zeichenfolge mit einem Buchstaben ist. Bisher habe ich die folgende FabrikRails Factory Mädchen, wie man 1-Buchstaben-Strings generieren

sequence(:bar, 'A') { |n| n } 

verwendet und es funktionierte, bis ich genug Tests hinzugefügt die Saite machen besteht aus zwei Buchstaben, das heißt nach ‚Z‘ der nächsten erzeugte Zeichenfolge war ‚AA‘. Meine Frage ist also, wie ich es wieder von "A" anfangen lasse? Danke im Voraus.

+0

Können Sie versuchen 'Sequenz (Bar, [* 'A' ..‘ Z ']. Zyklus) {| n | n} '? Ich hoffe es funktioniert auch. –

Antwort

2

Sie Enumerable#cycle auf folgende Weise verwenden:

sequence(:bar, ('A'..'Z').cycle)

+0

Das ist sauberer als Sergio's Antwort, jetzt bin ich in einem Dilemma, die Antwort sollte ich wählen:/ – Robert

+0

Ja, ich fragte auch, dass OP versuchen und bestätigen mich. Weil ich zu 99% sicher bin, dass es funktionieren sollte. –

+0

@Robert Sie sollten diese Lösung wählen. –

1

Etwas Ähnliches, vielleicht

sequence(:bar, 0) do |n| 
    letters = ('A'..'Z').to_a 
    letters[n % letters.length] 
end 
+0

Ausgezeichnet, vielen Dank, kann die Antwort noch nicht annehmen :) – Robert