Если я изучаю MacRuby или [закрытый] RubyCocoa

Я хотел бы сравнить строку с предыдущей, не сохраняя ничего в памяти (без словарей).

blockquote>

Чтобы иметь возможность суммировать подсчеты по всем предыдущим строкам с похожим словом, вам нужно поддерживать некоторое состояние.

Обычно эта работа подходит для awk. Вы можете рассмотреть эту команду:

awk '{a[$1] += $2} p && p != $1{print p, a[p]; delete a[p]} {p = $1} 
END { print p, a[p] }' file

a 2
file 7
for 1
has 1
is 2
lines 1
small 3
test 3
this 3
two 1

Используя delete, это решение не хранит весь файл в памяти. Состояние сохраняется только на время обработки строк с одним и тем же первым словом.

Awk Ссылки:

16
задан Jonas 26 January 2011 в 12:59
поделиться

3 ответа

Пойдите с MacRuby. Это - будущее :)

Это является более новым, путь быстрее, и намного лучше интегрированный. HotCocoa является потрясающим также.

MacRuby является VM Ruby, реализованная сверху Apple Technologies в противоположность мосту как RubyCocoa. Строка Ruby, например, является NSString по своей природе, вместо того, чтобы быть соединенной мостом временем выполнения. Это - намного более чистый, более быстрый и более серьезный подход. Это также разрабатывается и спонсируется Apple, что означает, что это могло стать частью OS X в какой-то момент.

Также см. это сообщение: Почему Вопросы MacRuby

37
ответ дан 30 November 2019 в 15:35
поделиться

С тех пор, как Чак ответил вам, многое изменилось, MacRuby теперь использует LLVM, позволяет компилировать AOT и довольно стабилен и намного быстрее, чем раньше. Рубиновая сторона вещей все еще нуждается в некоторой работе, чтобы быть на 100% совместимой, но пока я пишу этот ответ, 0.5 все еще находится в бета-версии, и вы должны увидеть, что рубиновые библиотеки очень быстро совместимы.

8
ответ дан 30 November 2019 в 15:35
поделиться

RubyCocoa является более сформировавшимся и лучше протестированный. MacRuby более прост и лучше разработанный в целом. MacRuby также почти так же стабилен как шезлонг, находящийся на beachball. Серьезно. Это - определенно то, которое Вы хотите использовать в конечном счете, но это еще не там. Они не так отличаются, что необходимо было бы "учиться" один по сравнению с другим. Они - оба просто Ruby с доступом к API Какао. Это больше о знании API Какао, чем что-либо еще.

Я рекомендовал бы изучить Какао с Objective C. После того как у Вас есть хорошее схватывание на центральном понятии платформы (которые являются всеми на основе Objective C), затем можно использовать Ruby, если Вы все еще хотите.

Обновление 2011

Вышеупомянутое больше не верно для MacRuby. Это очень твердо и достаточно быстро, чтобы сделать большинство видов приложений Какао в чистом Ruby. Команды MacRuby также старались изо всех сил быть совместимыми с в значительной степени всеми системными платформами, даже C. Если Вы любите Ruby и хотите сделать разработку Mac, это - определенно что-то для рассмотрения. Нет никакой причины больше выбирать RubyCocoa, если Вы не должны поддерживать древние версии OS X, или PowerPC (MacRuby является строго Intel 10.5 +). Остающиеся протесты:

  • Необходимость включать MacRuby.framework в Ваши приложения помещает высокую нижнюю границу на размер пакета (пара дюжины МБ для "Привет Мирового" IIRC)

  • Хотя это стабильно в целом, это - все еще очень новая бета-версия программного обеспечения, таким образом, существует несколько морщин в менее используемых углах библиотек (например, Указатели имеют несколько причуд), и некоторые проектные решения не являются окончательными (например, поддержка параллелизма развивается быстро),

  • Документация является все еще происходящей работой, и отстает от стремительного языка. Много статей, которые Вы найдете о MacRuby, предполагает, что HotCocoa является прохладным, собственным способом сделать приложения — это - прохладный эксперимент, но это - теперь устаревшее программное обеспечение с некоторыми критическими дефектами, которые делают его неподходящим для разработки крупномасштабного приложения. Стандартный набор инструментальных средств XCode является поддерживаемым способом сделать разработку MacRuby.

Я также все еще рекомендую изучить Какао с Objective C, просто потому что это - родной язык платформы и таким образом путь наименьшего сопротивления.

7
ответ дан 30 November 2019 в 15:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: