solomon rails gratis edicion consumidor comportamiento ruby comparison

ruby - rails - Elegante sintaxis de rubí para devolver el mayor de dos objetos.



comportamiento del consumidor solomon 10 edicion pdf gratis (3)

Por supuesto, hay mil formas de hacerlo, pero ¿es la forma más sencilla (o elegante) de lograrlo?

[4,8].max

En realidad no está tan mal, pero ¿qué harías?


Esa es exactamente la razón por la que Enumerable#max se ha definido para cualquier clase que implemente Comparable . Es definitivamente el más simple. Para entender realmente lo que está sucediendo, deberías ver cómo se implementó en la biblioteca central de tu implementación favorita de Ruby (y probablemente esté optimizada).


Está bien, he probado esto por curiosidad:

#!/usr/bin/env ruby # -*- mode: ruby -*- limit = 3000000 tstart_1 = Time.now() (0..limit).each do |i; a,b, max| a = rand(9999999) b = rand(9999999) max = [a,b].max end puts "Array method: #{Time.now() - tstart_1} seconds" tstart_2 = Time.now() (0..limit).each do |i; a,b, max| a = rand(9999999) b = rand(9999999) max = (a > b) ? a : b end puts "Ternary method: #{Time.now() - tstart_2} seconds"

Salida:

Método de matriz: 1.746134 segundos

Método ternario: 1.002226 segundos.


Si no quieres generar una matriz, hay un operador condicional:

max = a > b ? a : b