7
votes

Rubis élégant one doublures

L'une des raisons pour lesquelles j'aime écrire dans Ruby, c'est parce qu'elle est très capable de réaliser beaucoup via une doublure.

J'aime: p>

@sentence = @sentence.split(' ').map!{|x| x = x[0..0].upcase << x[1..-1] }.join(' ')


8 commentaires

Veuillez éditer et marquer cela comme un wiki communautaire, pour éviter de le fermer pour être subjectif (aucune réponse réelle) :)


La capacité de marquer des questions que la communauté wiki a été supprimée il y a une fois. Voir ceci: meta.stackexchange.com/questions/392/...


Je n'appellerais pas que "élégant", car il est presque illisible. Si un autre programmeur rencontre ce code, ils devront passer plusieurs minutes à la lire pour comprendre ce qu'il va de faire. C'est plus cryptique que élégant. Vous avez sauvegardé des coups de frappe au prix de la lisibilité.


Dans votre exemple, pourquoi ne pas utiliser string.capitaliser ? Accordé qu'il est peut-être plus que vous voulez (il masse le reste de la chaîne)


@Matchu: vous peut 'T Marquez une question en tant que wiki communautaire plus . Il Juste arrive automatiquement. (Je ne sais pas ce qui empêche une réponse d'être fermée comme trop subjective.)


Ce n'est pas une doublure pour moi - le ') se produit sur une deuxième ligne parce que c'est si long!


Ruby est donc le langage de programmation Arnold Schwarzenegger écrirait-il?


Schwarzenegger m'a toujours frappé comme un gars plutôt fortrain.


7 Réponses :


29
votes

Vous avez posté l'ONLININER:

@sentence.gsub!(/\S+/,&:capitalize)


4 commentaires

Juste maintenant, vous avez complètement brisé son esprit, soit il a absolument triplé son excitation pour des doublures.


J'espérais apprendre beaucoup des réponses ici et le commentaire de Ken a été un parcours éducatif parfait! Définitivement x3'd l'excitation d'une doublure


+1 @sentenence = @ phrase.split ('') .MAP (&: capitaliser) .join ('') est ce que j'appellerais élégant.


@Bravingspirit: : quelque chose est un symbole, dans ce cas pour le nom d'une fonction. & la convertit vers un proc en appelant to_proc sur le symbole. Lorsque vous appelez to_proc sur un symbole, il crée une fonction qui appelle la méthode avec ce nom sur son premier argument. (SO : capitalize.to_proc () crée une lambda foo que lorsque vous appelez foo (a) , il appelle a.capitaliser )



1
votes

Vous voudrez peut-être jeter un coup d'œil à Ruby Quiz # 113 .


0 commentaires

0
votes

Eh bien, j'ai écrit un il y a quelques jours, mais je ne pouvais pas l'utiliser comme une réponse car la question était fermée à ce moment-là. Il remplace la première ligne d'un fichier avec une chaîne si la chaîne n'est pas déjà là.

J'espère que quelqu'un s'améliore également sur celui-ci: P>

ruby -i.bak -pe "print ($_!~/string/ && $.<2) ? \"string\n\":''" filename.txt


0 commentaires

0
votes

Générateur de séquence Fibonacci: xxx

même que: xxx


0 commentaires

1
votes

Ouvrez un fichier, écrivez-y et fermez-le dans une ligne:

def get_all_coords(type)
  eval("@#{type}_coords")
end


0 commentaires

0
votes

Absolument cette émulation de Grep (utilisateur Windows). [ Crédit va à Dave Thomas ] xxx


0 commentaires

1
votes

Le numéro Fibonacci à coup sûr!

def fib(n, t = n < 2 ? n : fib(n-1) + fib(n-2)) t; end


0 commentaires