Por supuesto, hay mil maneras de hacerlo, pero ¿es la manera más simple (o más elegante) de lograr esto?Sintaxis elegante de rubí para devolver el mayor de dos objetos
[4,8].max
De hecho, no está nada mal, pero ¿qué harías?
Por supuesto, hay mil maneras de hacerlo, pero ¿es la manera más simple (o más elegante) de lograr esto?Sintaxis elegante de rubí para devolver el mayor de dos objetos
[4,8].max
De hecho, no está nada mal, pero ¿qué harías?
Si no desea generar una matriz, está el operador condicional:
max = a > b ? a : b
Por eso exactamente Enumerable#max
se ha definido para cualquier clase que implemente Comparable
. Definitivamente es el más simple. Para realmente entender lo que está sucediendo, necesitaría ver cómo se ha implementado en la biblioteca principal de su implementación Ruby favorita (y probablemente esté optimizado).
Esta respuesta podría beneficiarse mediante el suministro de un ejemplo específico –
La respuesta es que el ejemplo en la pregunta es correcto; no necesita otro ejemplo. – Braiba
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:
matriz Método: 1.746134 segundos
Método ternario: 1.002226 segundos
La mina era 'Ternary: 1.452967' y' Array: 3.147474'. Definitivamente yendo por el ternario :) – m93a
Sin duda es muy simple, pero la definición y la matriz sobre la marcha de esta manera no se siente tan bien. – doctororange
Para mí, la sintaxis de matriz es más clara que la sintaxis ternaria. –
Pero esto es más SECO que la sintaxis ternaria – ryan0