Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #81 (permalink)  
Старый 14.10.2012, 23:40
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от tenshi
который Function может принимать и возвращать всё, что угодно или всё же что-то конкретное?
Кстати, функцию можно декорировать так, чтоб валидировать (есть такое слово?) возвращаемое значение.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #82 (permalink)  
Старый 14.10.2012, 23:53
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 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 // а тут?
__________________
.ня
Ответить с цитированием
  #83 (permalink)  
Старый 14.10.2012, 23:59
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> Проверка конструктора.
> this.w.constructor === SomeClass

то есть даже инстанса субкласса туда поместить будет нельзя?

а почему проверка на инт выглядит иначе?
new Integer( value )
или для Integer, Float и тучи других будет отдельная ветка алгоритма?

> Кстати, функцию можно декорировать так, чтоб валидировать (есть такое слово?) возвращаемое значение.

есть, но ты действительно собираешься декорировать _каждую_ функцию и после каждого вызова проверять тип возвращаемого значения? производительность не беспокоит?
__________________
.ня
Ответить с цитированием
  #84 (permalink)  
Старый 14.10.2012, 23:59
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

ХЗ, это всё надо обдумывать. Если захочешь сделаешь.
Сообщение от tenshi
да, там же не любая функция может быть. а, например, функция от 2 целочисленных параметров, возвращающая строку.
Всё-таки ты прав, это получится вырвиглазненько.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #85 (permalink)  
Старый 15.10.2012, 00:02
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от tenshi
то есть даже инстанса субкласса туда поместить будет нельзя?
instanceof?
Сообщение от tenshi
new Integer( value )
или для Integer, Float и тучи других будет отдельная ветка алгоритма?
Не обращай внимания, то сообщение я удалил. Ветка алгоритма будет та же самая, только, кроме проверки инстанса (если выдаст false) нужно проверять на приведение, как и в том сообщении.
Сообщение от tenshi
есть, но ты действительно собираешься декорировать _каждую_ функцию и после каждого вызова проверять тип возвращаемого значения?
Да.
Сообщение от tenshi
производительность не беспокоит?
На сколько дольше будет работать функция, в которой мы тупо добавили проверку на соответствующий тип? Я думаю не на много.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #86 (permalink)  
Старый 15.10.2012, 00:05
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от FINoM
Всё-таки ты прав, это получится вырвиглазненько.
Как-то так:
Interface({
  i: Integer,
  n: String,
  f: {
    gets: [ Float, Float, String ],
    returns: Float
  }
})
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #87 (permalink)  
Старый 15.10.2012, 00:05
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Даздравствуют извращения. Сделать язык не типизированным, от этого и медленее, что бы разработчики делали искуственную типизацию и он становился ещё медленее.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #88 (permalink)  
Старый 15.10.2012, 00:14
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

смотря какая проверка. если мы завернём функцию складывающую 2 числа в декоратор, который будет делать parseInt для каждого аргумента и для результата, то обработка массива с помощью Array::reduce( 0, add ) будет занимать не 10мс, а все 50.
__________________
.ня
Ответить с цитированием
  #89 (permalink)  
Старый 15.10.2012, 00:18
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

FINoM, а если нужно произвольное число параметров определённого типа начиная со второго?

Nekromancer, зато мы не скованы ограничениями и можем реализовывать типизацию так как ходим) хотим исключение бросам, хотим приводим к нужному типу, хотим все одной функцией всё обрабатываем, хотим реализуем перегрузку методов по типам аргументов))
__________________
.ня
Ответить с цитированием
  #90 (permalink)  
Старый 15.10.2012, 00:18
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

весёлые очепятки) пойду поем...
__________________
.ня
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск