Найти минимальное значение довольно просто, используя функцию minimum
с аргументом отображения:
julia> minimum(x->x.odometer, fleet)
0.08468003971220694
Если вам также нужен индекс минимума, вы можете использовать функцию findmin
, К сожалению, по какой-то причине это не поддерживает аргумент функции, поэтому вам необходимо создать временный массив и применить к нему findmin
:
julia> findmin(getfield.(fleet, :odometer))
(0.08468003971220694, 1)
Вы также можете использовать getproperty
вместо getfield
, они делают то же самое для вашей структуры, я не уверен, что предпочтительнее. Вероятно, наиболее идиоматическим решением c было бы определение функций доступа вместо непосредственного использования значений полей. Например:
odometer(car::Car) = car.odometer
minimum(odometer, fleet)
findmin(odometer.(fleet))
Для максимальных значений используйте maximum
и findmax
.