15 мая 2008

String!=Array и уникальность

Где-то наткнулся на предложение элегантно решить на любимом ЯП задачу подсчитать количество уникальных символов в строке.
На руби это вылилось в одну строку, хотя и сомнительную:

'asdasdadsadasdaffw'.split('').uniq.size

Сомнителен способ разбиения строки в массив. Ведь это поиск и только потом разделение. Стандартный метод to_a запихивает всю строку в один элемент массива (что довольно странно согласуется со способом адресации элементов строки подобно массивам, например str[5]). Можно итерироваться по строке, как по массиву, и складывать букавы во временный массив и считать, но бережный к кодировкам метод each_char есть только в 1.9 версии.
Больше всего удивляет именно to_a. Наводит на мысли об отсутствии единого дизайна. Или дыру в моей голове.

2 комментария:

semka комментирует...

Наш ответ чемберлену.
Подозрительно похоже, не находишь?

Io:
"zasdasdadsadasdaffw" split unique size

PhoeniX комментирует...

Похоже, но я не про то.
Я про то, что хотя строка массивоподобна, нормального способа преобразовать её в массив нет.