14.10.2012, 23:40
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от tenshi
|
который Function может принимать и возвращать всё, что угодно или всё же что-то конкретное?
|
Кстати, функцию можно декорировать так, чтоб валидировать (есть такое слово?) возвращаемое значение.
|
|
14.10.2012, 23:53
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
> В данном случае всё. Ты имеешь в виду какой-то конкретный тип?
да, там же не любая функция может быть. а, например, функция от 2 целочисленных параметров, возвращающая строку.
> Не въехал в фразу.
function square( obj ){
return obj.getX() * obj.getY()
}
не всё ли равно какой именно класс у obj, если он поддерживает необходимый нам интерфейс:
double function getX();
double function getY();
> Какая разница? Тупо проверять конструктор.
например такая:
alert( new Number( 0 ) ? 1 : 2)
alert( 0 ? 1 : 2)
> Тоже не понял, поясни.
o.s= 1 // тут должно быть исключение или же автоматическое приведение типов?
o.s= new SomeClass // а тут?
__________________
.ня
|
|
14.10.2012, 23:59
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
> Проверка конструктора.
> this.w.constructor === SomeClass
то есть даже инстанса субкласса туда поместить будет нельзя?
а почему проверка на инт выглядит иначе?
new Integer( value )
или для Integer, Float и тучи других будет отдельная ветка алгоритма?
> Кстати, функцию можно декорировать так, чтоб валидировать (есть такое слово?) возвращаемое значение.
есть, но ты действительно собираешься декорировать _каждую_ функцию и после каждого вызова проверять тип возвращаемого значения? производительность не беспокоит?
__________________
.ня
|
|
14.10.2012, 23:59
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
ХЗ, это всё надо обдумывать. Если захочешь сделаешь.
Сообщение от tenshi
|
да, там же не любая функция может быть. а, например, функция от 2 целочисленных параметров, возвращающая строку.
|
Всё-таки ты прав, это получится вырвиглазненько.
|
|
15.10.2012, 00:02
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от tenshi
|
то есть даже инстанса субкласса туда поместить будет нельзя?
|
instanceof?
Сообщение от tenshi
|
new Integer( value )
или для Integer, Float и тучи других будет отдельная ветка алгоритма?
|
Не обращай внимания, то сообщение я удалил. Ветка алгоритма будет та же самая, только, кроме проверки инстанса (если выдаст false) нужно проверять на приведение, как и в том сообщении.
Сообщение от tenshi
|
есть, но ты действительно собираешься декорировать _каждую_ функцию и после каждого вызова проверять тип возвращаемого значения?
|
Да.
Сообщение от tenshi
|
производительность не беспокоит?
|
На сколько дольше будет работать функция, в которой мы тупо добавили проверку на соответствующий тип? Я думаю не на много.
|
|
15.10.2012, 00:05
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от FINoM
|
Всё-таки ты прав, это получится вырвиглазненько.
|
Как-то так:
Interface({
i: Integer,
n: String,
f: {
gets: [ Float, Float, String ],
returns: Float
}
})
|
|
15.10.2012, 00:05
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Даздравствуют извращения. Сделать язык не типизированным, от этого и медленее, что бы разработчики делали искуственную типизацию и он становился ещё медленее.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
15.10.2012, 00:14
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
смотря какая проверка. если мы завернём функцию складывающую 2 числа в декоратор, который будет делать parseInt для каждого аргумента и для результата, то обработка массива с помощью Array::reduce( 0, add ) будет занимать не 10мс, а все 50.
__________________
.ня
|
|
15.10.2012, 00:18
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
FINoM, а если нужно произвольное число параметров определённого типа начиная со второго?
Nekromancer, зато мы не скованы ограничениями и можем реализовывать типизацию так как ходим) хотим исключение бросам, хотим приводим к нужному типу, хотим все одной функцией всё обрабатываем, хотим реализуем перегрузку методов по типам аргументов))
__________________
.ня
|
|
15.10.2012, 00:18
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
весёлые очепятки) пойду поем...
__________________
.ня
|
|
|
|