Cómo escribir bloques de una sola línea

Me encuentro tratando de usar bloques de una sola línea, pero de todos modos tengo que dividirme en varias líneas. Mi ejemplo más reciente es que estoy tratando de get las iniciales del campo de name de un object de logging activo.

 @employee.name = "John Doe" 

y quiero devolver "JD" .

La única forma en que sabía cómo hacerlo era inicializar una cadena, luego dividir el nombre, luego agregar a la cadena inicializada. Por lo less, ¿cómo puedo evitar tener que inicializar la cadena vacía?

 def initials # In model intials = '' name_array = self.name.split(" ") name_array.each { |name| initials += name[0].capitalize } return initials end 

Solutions Collecting From Web of "Cómo escribir bloques de una sola línea"

Déjame jugar con alguna testing de concepto

 class Employee attr_accessor :name def initials @name.split(' ').map { |name| name[0] }.join end end e = Employee.new e.name = "Foo Baz" p e.initials # FB 

Intentaría cosas como:

 'John Doe'.scan(/\b[AZ]/).join # => "JD" 'John Doe'.scan(/\b[az]/i).join # => "JD" 

Cualquiera de estas expresiones puede romperse con nombres con suficiente complejidad:

 'John Doe-Smith'.scan(/\b[az]/i).join # => "JDS" 'John Doe Jr. III'.scan(/\b[az]/i).join # => "JDJI" 'Dr. John Doe MD'.scan(/\b[az]/i).join # => "DJDM" 

Entonces se convierte en una necesidad de quitar las partes que no quieres.