- 1
class Int extends Float {}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+130
class Int extends Float {}
http://haxe.ru/ref-base_types
Этож какие?
Только сейчас понял, что Барбара Лисков не мужик. о.0
Оффтоп: местные овцушки мужику выдали паспорт, в котором написано Кузьма Ивановна...
Liskov substitution principle
Имя редко где упоминается. Вполне можно представлять в голове бородатого профессора Лискова.
http://try.haxe.org <- введите сюда этот замечательный код и:
Build failure
Type name Int is redefined from module StdTypes
Как я и говорил ниже - проблема в голове писавшего код.
Но вы, конечно, можете продолжать обсуждать почему так придумали и как можно было сделать иначе.
это какие? применимы все, только работают не так.
к примеру, деление - ну есть же целочисленное деление Int -> Int, к примеру, 1/3=0
Вот решил посмотреть, как же оно реализовано на самом деле. И, на самом деле (это только пример, но во всех остальных местах по коду целые и вещественные обрабатываются отдельно / никто не делает предположений о том, что одно является подклассом другого). Так что, наверное, все-таки это инициатива автора статьи.
Еще, как вариант, статья могла быть написана очень давно, когда Int / Float действительно были определены в стандартной библиотеке http://haxe.org/ref/basic. (В настоящем варианте стандартной библиотеки определений Int / Float нет, но рефлектор, например, считает их разными типами.)
Впервые эта строчка встречается в 2008 году, в первой ревизии страницы с текстом.
http://haxe.org/ref/basic?version=8 version #8, modified 2008-05-01 21:50:41 by ncannasse
Согласно истории ревизий, это период после 1.19 (2008-04-05), но до RC 2 (2008-07-17). Некоторые изменения второй ветки, предполагают, как мне кажется, разделение типов целых и рациональных чисел:
(2008-11-23: 2.02) fixed issue with Int default value for Float parameter
(2009-03-22: 2.03) optimizer : reduce constant int/float/bool expressions and immediate function calls
https://github.com/HaxeFoundation/haxe/blob/development/doc/CHANGES.txt
Проблема оказалась в том, что никто не следит за документацией. Обсуждаемый кусок был неприменим уже ко второй версии, а остался на вики аж до третьей. Всетаки проект подзаброшен.
кстати, с третьей версии базовые типы внезапно абстрактны:
(2013-02-24: 3.0.0-RC) added abstract types (Int/Float/Bool/Void/Class/Enum/EnumValue)
Что явно указывает на сорта наполнения головушки писавшего. Впрочем, чего еще можно ожидать от упертого апологета подзаброшенной поделки опенсорсных лямбда-самцов?