Ich mache eine Übung, bei der die Eingabe ein Array ist. Ich brauche eine Möglichkeit, false
zurückzugeben, wenn das Array etwas anderes als die Strings 'n', 's', 'e' und 'w' enthält oder wenn das Array keine der Strings 'n', 's' enthält. "e" und "w". Gibt es dafür eine vordefinierte Methode? Wenn nicht, wie kann das gemacht werden?Gibt es eine Array-Methode in Ruby für "muss mindestens eine davon enthalten, kann aber nichts anderes enthalten"?
Antwort
Ich glaube nicht, dass es eine eingebaute Methode gibt, die Sie verwenden könnten. Wenn Ihr Array ist, könnten Sie Folgendes tun.
directions = ['n', 's', 'e', 'w']
arr.any? && (arr-directions).empty?
Einige Beispiele:
arr = ['n', 's', 'n']
arr.any? && (arr-directions).empty?
#=> true
arr = ['n', 's', 'f']
arr.any? && (arr-directions).empty?
#=> false
arr = ['f', 'g']
arr.any? && (arr-directions).empty?
#=> false
arr = []
arr.any? && (arr-directions).empty?
#=> false
Dies scheint die einfachste Antwort zu sein, danke. Ich habe die Antwort von SYoung82 nur verwendet, weil ich bereits einen Block mit "if" -Anweisungen hatte und es einfach hinzugefügt habe. Ist das nicht schlau? Ich bin ziemlich neu in Ruby. –
Ich kann nicht sagen, ob das schlau ist oder nicht. Einige Rubies werden minimale Änderungen vornehmen, damit ihr Code funktioniert. andere, wenn sie an eine bessere Art denken, etwas zu tun, werden all ihren alten Code ausreißen. Es kann auch von Zeitdruck abhängen. –
Nein, soweit ich bin mir bewusst, in Funktion gebaut. Du könntest etwas wie unten tun oder das Include ausprobieren? Methode auf Ihrem Array. Siehe http://apidock.com/ruby/Array/include%3F
array.each do |element|
if element != 'n' && element != 's' && element != 'e' && element != 'w'
return false
end
end
return true
Das durch jedes Element des Arrays gehen sollte und vergleicht jedes Element auf 'n', 's', 'E' und 'w'. Wenn etwas gefunden wird, das nicht übereinstimmt, wird false zurückgegeben. Wenn es den ganzen Weg durchmacht, ohne etwas Außergewöhnliches zu finden, wird es wahr. Vielleicht möchten Sie am Anfang auch nach einem leeren String suchen.
Vielen Dank, dass ich es verwendet habe und es funktioniert super –
@ichi_the_killer bedenken Sie, dass, wie es steht, diese Lösung 'true' für ein leeres Array' [] 'zurückgibt. –
Sie können grep und grep_v mit regex verwenden:
def news? arr
r = /[news]/
!arr.grep(r).empty? && arr.grep_v(r).empty?
end
Carys Tests verwenden (wenn auch nur leicht modifiziert):
news? ['n', 's', 'n'] #=> true
news? ['n', 's', 'f'] #=> false
news? ['f', 'g', 'h'] #=> false
news? [] #=> false
Ich habe noch nie grep oder grep_v verwendet, ich muss mich an sie erinnern, danke –
- 1. Android - HorizontalScrollView kann nichts enthalten
- 2. Abfrage-Eingabe muss mindestens eine Tabelle oder Abfrage enthalten
- 3. Ein JSON-Text muss mindestens zwei Oktette enthalten! (JSON :: ParserError)
- 4. regexp - muss ein Wort enthalten, dürfen aber nicht enthalten andere
- 5. Databinding muss eine Layout-Datei enthalten
- 6. Mindestens eine Ebene muss alle Variablen enthalten, die für die Facettierung verwendet werden.
- 7. Gibt es eine Möglichkeit, ein Element abhängig davon, was darin enthalten ist, zu targetieren?
- 8. regexp in PHP: enthalten kann, aber nicht muss
- 9. RouteData muss 'Aktion' für eine WebAPI-Route enthalten?
- 10. Kann Matlab eine starke Bezeichnung für eine .NET-Assembly enthalten?
- 11. Zeichenfolge muss 2 Wörter enthalten
- 12. Kann eine Alerting-Regel eine Sammlungsabfrage enthalten?
- 13. VBA-Code "Abfrage-Eingabe muss mindestens eine Tabelle oder Abfrage enthalten"
- 14. SQL, wo verbundener Satz alle Werte enthalten muss, aber mehr enthalten kann
- 15. Kann eine Klasse eine Referenzvariable für sich selbst enthalten?
- 16. Regex für RegularExpressionAttribute muss enthalten "[S]" Text
- 17. Ruby-Paket enthalten Probleme
- 18. Kann eine Nachricht mehrere Absender enthalten?
- 19. Regex: Mindestens ein Groß char, ein kleingeschriebenes Zeichen, eine Ziffer und nichts anderes
- 20. Kann eine Domain mehrere Cookies enthalten?
- 21. Verwenden von MySQL Wie kann ich eine große Gruppe auswählen, die eine kleinere Gruppe enthalten muss?
- 22. Kann eine Excel-Zelle Bild enthalten
- 23. Regulärer Ausdruck für die Übereinstimmung ([^>(),] +), aber einige \ w's enthalten?
- 24. Swift optionale Methode Argumente, aber mindestens eine muss ausgefüllt werden
- 25. Kann eine Rails-Anwendungsvorlage Generatorparameter enthalten?
- 26. Kann eine Skip-Liste doppelte Elemente enthalten?
- 27. SQL Server 2012 Fehler: Jeder GROUP BY-Ausdruck muss mindestens eine Spalte enthalten, die nicht eine äußere Referenz
- 28. Gibt es eine Abkürzung für Ruby Blocks?
- 29. Verwenden .htaccess eine Datei enthalten
- 30. Kann eine Base64-codierte Zeichenfolge Whitespace enthalten?
Ich vertraue dir nicht bearbeiten nichts ausmacht, und dass ich nicht Geben Sie die Frage falsch an. –