Если a
массив, я хочу a.index(a.max)
, но что-то более подобное Рубину. Это должно быть очевидно, но я испытываю затруднения при нахождении ответа в так и в другом месте. Очевидно, я плохо знаком с Ruby.
Для Ruby 1.8,7 или выше:
a.each_with_index.max[1]
Это делает одну итерацию. Не совсем самая семантическая вещь когда-либо, но если вы начнете это много делать, я бы обернул его в методе INDEX_OF_MAX
.
В дополнение к другим командам, все слова будут заключены в строку в двойных кавычках (согласно вашему комментарию)
:s/\(\S\+\)/"\1"/
или, если вы хотите уменьшить количество обратных косых черт, вы можете поместить \v
(очень волшебный) модификатор в начале образца
:s/\v(\S+)/"\1"/
-121--637812- для Ruby 1,8,7 или выше:
a.each_with_index.max[1]
Не совсем самая смысловая вещь в истории, но если вы найдете себя сделать это много, я бы обернуть его в индекс _ _ max
метод в любом случае.
a = [1, 4 8]
a.inject(a[0]) {|max, item| item > max ? item : max }
По крайней мере это Ruby-like:)