LINUX.ORG.RU

Ruby 1.9.2

 ,


0

0

Ruby 1.9.2 по большей части совместим с 1.9.1 за исключением данных изменений:

  • Множество новых методов.
  • Новый socket API (с поддержкой IPv6).
  • Новые кодировки.
  • Класс Random, в котором доступны различные генераторы случайных чисел.
  • Переписан класс Time, устранена проблема 2038 года.
  • Некоторые улучшения в regexp'ах.
  • $: больше не включает текущую директорию.
  • dl переписан с использованием libffi.
  • Новая библиотека psych, являющаяся обёрткой libyaml, которую можно использовать вместо syck.

Новая версия проходит 99% тестов RubySpec.

>>> Подробности

★★

Проверено: JB ()

Ответ на: комментарий от Deleted

В принципе, оно только 1ой буквой класса не даёт использовать что-то кроме A-Z

Что, даже русские буквы нельзя?

<?php

class жопа 
{
	function банальность() { echo "зонд не обнаружен"; }
}

$тест = new жопа;
$тест->банальность();
$ php test.php 
зонд не обнаружен

А так - я в L2Fortress на JBForth народу подсовывал вариации со стрелочками и точками (благо это стандартный Форт-стиль, имена типа «>list» для него обычное дело), но народ не оценил :) Все привыкли уже к английскому языку. При чём привыкли жёстко. Это и убивает «птичьи» языки. Хоть это Форт будет, хоть Ruby. В Форте, хоть, можно всё на чистый английский перевести. А как в том же Ruby запись с восклицательным знаком (в смысле присваивание) сделать без такового? :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от Deleted

>Может ты просто не птица? ;)

Конечно, нет. Я представитель вида Homo sapiens :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Первой буквой A-Z, остальные можно и русские. Соглашения такие, а делать проверку для всего юникода, заглавная буква или нет никому не хочется. Мой багрепорт на эту тему закрыли. Не то что бы он был серьёзный :)

А как в том же Ruby запись с восклицательным знаком (в смысле присваивание)


(?_?) В Ruby, насколько я помню, восклицательный знак обозначает только отрицание и «особый» метод если в конце имени.

Deleted ()

пользуясь случаем спрошу: как в сабже отсортировать строки в не ascii-кодировки по алфавиту, не использует коллейшен и всё тут, сортирует просто по кодам символов?

irb(main):001:0> #encoding: koi8-r irb(main):002:0* ".encoding => #<Encoding:KOI8-R> irb(main):003:0> ['а', 'р', 'я', 'с'].sort => [«а», «я», «р», «с»]

С кодировкой UTF-8 немного лучше, потому что в таблице все русские символы кроме 'ё' идут по алфавиту, соот-но и сортируются правильно просто по коду символа.

anonymous ()
Ответ на: комментарий от anonymous

извиняйте за побитый листинг, вот нормальный

irb(main):001:0> #encoding: koi8-r
irb(main):002:0* ''.encoding
=> #<Encoding:KOI8-R>
irb(main):003:0> ['а', 'р', 'я', 'с'].sort
=> ["а", "я", "р", "с"]

anonymous ()
Ответ на: комментарий от KRoN73

> Не очевидно. Это отражение иерархии, но не размера.

размер не важен =)

Очевидно, что функционал субкласса заведомо больше функционала суперкласса.

«функционал»? хотя в питоне всякое бывает (см. примеры выше). ;) а вообще — http://en.wikipedia.org/wiki/Liskov_substitution_principle

Очевидно также, что по объёму кода сравнение неуместно. Так что по единственному видимому мной объективному критерию сравнения субкласс получается больше суперкласса.

что-ж, это мнение имеет право на жизнь. в прочем как и всякое мнение. главное, в контексте ООП, про это не упоминай. засмеют. -)

Lucky ★★ ()
Ответ на: комментарий от tailgunner

> Почему то, что в класс-родитель нельзя добавить атрибут является «бредом с точки зрания ООП»?

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

Lucky ★★ ()
Ответ на: комментарий от anonymous

Сконвертировать в другую кодировку? Ну или руками.

Deleted ()
Ответ на: комментарий от Lucky

>> Почему то, что в класс-родитель нельзя добавить атрибут является «бредом с точки зрания ООП»?

поведение же наследуется. если инстанс родительского класса, при попытке добавить атрибут, кидает исключение, то логично такое же поведение ожидать и от инстанса дочернего класса

Придирка, короче говоря. Хочешь, чтобы дочерний класс бросал исключение при добавлении - задай в нем __slots__

ведь в дочерний класс мы ничего явным образом не добавляли.

Считай. что Питон сам добавил, так задумано и описано в документации.

tailgunner ★★★★★ ()
Ответ на: комментарий от Deleted

> Сконвертировать в другую кодировку? Ну или руками.

А в какую другую? даже в UTF-8 «ё» не на своём месте, значит и для неё придётся городить костыль.

Я конечно извиняюсь, но 21 век на дворе, а руби получается не умеет даже использовать коллейшен для сравнения строк? Без этого теряется большАя часть смысла задания кодировок для строк.

Мне очень нравится руби, но вот с этими сортировками явно какой-то косяк. Либо просто никто не знает как сделать нормально, а то я у кого ни спрашиваю - всё получаю ответ что де руками или конверт в UTF-8 + костыль для Ё. Безобразие какое-то.

anonymous ()
Ответ на: комментарий от Deleted

>и «особый» метод если в конце имени.

Я про него и говорю :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от anonymous

все русские символы кроме 'ё' идут по алфавиту

хех.

$ php -r '$x = array("б", "а", "ё", "з", "ъ"); sort($x, SORT_LOCALE_STRING); print_r($x);'
Array
(
    [0] => а
    [1] => б
    [2] => ё
    [3] => з
    [4] => ъ
)
KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Эээ… Так это не присваивание. Восклицательный знак просто указывает, что метод особенный, по сравнению с таким же, но без него, сам по себе он ничего не делает. Если оба метода по смыслу одинаковые и вся разница только в создании нового объекта vs модификации на месте (!), то обычное же использование x = x.method работает.

Deleted ()
Ответ на: комментарий от KRoN73

как раз в пхп с этим никогда не было проблем при правильном подходе :)

anonymous ()
Ответ на: комментарий от CARS

> Джентльмены, а что круче: Перл, Руби или Питон?

Perl конечно. Остальное для школоты.

anonymous ()
Ответ на: комментарий от KRoN73

Попробовал у себя и вот что получилось
php -r '$x = array(«б», «а», «ё», «з», «ъ»); sort($x, SORT_LOCALE_STRING); print_r($x);'

Array
(
[0] => а
[1] => б
[2] => з
[3] => ъ
[4] => ё
)

anonymous ()
Ответ на: комментарий от anonymous

Ну, фиг знает, что у тебя за локаль и что у тебя там в php.ini прописано...

Я же вариант привёл для настроенной системы. А тебе, видимо, ещё со всякими set_locale() и ini_set() поиграть нужно.

KRoN73 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.