J'ai besoin de choisir un nom au hasard à partir d'un tableau dans Ruby, puis vérifiez s'il est en majuscule. Jusqu'à présent, j'ai: Il doit être comme deux méthodes distinctes comme celle-ci. P> P>
3 Réponses :
quelque chose comme ceci: puis quelque chose comme: p>
Peut-être quelque chose comme ceci: update strong> p> J'ai publié le code sans trop penser à l'abstraction et je pense que ce serait Beaucoup mieux pour encapsuler le nom et la vérification des majuscules pour séparer la classe et la rendre immuable, puis effectuez une classe de générateur qui sélectionne une entité de la collection. P> class NameGenerator
def initialize(items)
@items = items
end
def next
@items.sample
end
end
class Name
attr_reader :name
def initialize(name)
@name = name
end
def is_uppercase?
@name.match(/\p{Lower}/) == nil
end
end
ng = NameGenerator.new [
Name.new("name"),
Name.new("Name"),
Name.new("NAME"),
Name.new("na-me")
]
name = ng.next
puts name.name, name.is_uppercase?
Vous générez des chaînes aléatoires et non des noms, outre OP veut choisir des noms choisis au hasard à partir d'un tableau. @chars code> ne change pas et est identique pour chaque instance de la classe, êtes-vous sûr qu'il devrait être une variable d'instance?
Raison c'est écrit comme ceci est que des caractères ou des noms pourraient être initialisés dans le constructeur.
Cela me rappelle l'histoire du Sledgehammer et de la mouche.
Je ne suis pas développeur de rubis, est-ce trop de code pour une tâche aussi simple :)
Si vous voulez simplement vérifier la première lettre:
names = %w(Kirk mccoy scott Spock)
names.sample.then { |name| [name, name[0] == name[0].upcase] }
#=> ["mccoy", false]
Dupliqué possible de Comment puis-je vérifier un Le mot est déjà tous en majuscule dans Ruby?
Essayez ceci:
arr.sample.then {| mot | Word == word.uppase} code>. Voir Objet # puis (AKAcéder_self code>).Bienvenue à! Votre exemple de code ne montre pas une tentative authentique de résoudre le problème, ce n'est qu'un aperçu du code. S'il vous plaît voir " Comment demander " et les pages liées et " MCVE .