Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Параметры метода. Типизация и знач-ия по умолчанию (число прочтений - 5770 )
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Параметры метода. Типизация и знач-ия по умолчанию
26. Июля 2006 :: 20:25
Печать  
Довольно часто 1С-вские методы могут принять в один и тот же параметр а) элемент справочника, б) список значений, в) ваще пропустить параметр.
Хочется аналогичного для классов.

Но чтобы с проверкой типов.
И чтобы в качестве списка значений принимались любые наследники штатного класса СписокЗначений.

Можно ли корректно сделать такое на существующем функционале, и если да - то как?

P.S. Что-то я к ночи плохо соображаю. И сформулировать вопрос более внятно не выходит. Проснусь - спрошу еще раз. Если что не ясно - спрашивайте.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #1 - 27. Июля 2006 :: 19:03
Печать  
Ну вот, Федор, и ты туда же. А ведь, можно сказать, единственной надеждой и опорой был.

Федор, а зачем тебе проверка типов в насквозь нетипизированном языке?  Подмигивание
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #2 - 27. Июля 2006 :: 19:26
Печать  
sedmin писал(а) 27. Июля 2006 :: 19:03:
Федор, а зачем тебе проверка типов в насквозь нетипизированном языке?  Подмигивание

А хрен его знает... до кучи... Может и не надо ничего...

Спать хочу.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Параметры метода. Типизация и знач-ия по умолчанию
Ответ #3 - 28. Июля 2006 :: 06:14
Печать  
fez писал(а) 26. Июля 2006 :: 20:25:
Довольно часто 1С-вские методы могут принять в один и тот же параметр а) элемент справочника, б) список значений, в) ваще пропустить параметр.
Хочется аналогичного для классов.
Но чтобы с проверкой типов.

Запросто.
В описании параметра ставишь "Неопределенный", а в самом методе сперва проверяешь тип как угодно.

Цитата:
И чтобы в качестве списка значений принимались любые наследники штатного класса СписокЗначений.
Можно ли корректно сделать такое на существующем функционале, и если да - то как?

Это, как мы уже выяснили, возможно.
В описании параметра пишешь "СписокЗначений ПарамТамТам", должно работать для подклассов.

Цитата:
Спать хочу.

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

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #4 - 30. Июля 2006 :: 12:26
Печать  
kms писал(а) 28. Июля 2006 :: 06:14:
В описании параметра ставишь "Неопределенный"

kms писал(а) 28. Июля 2006 :: 06:14:
В описании параметра пишешь "СписокЗначений ПарамТамТам"

Так что писать - список значений или неопределенный?
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #5 - 30. Июля 2006 :: 12:28
Печать  
sedmin писал(а) 27. Июля 2006 :: 19:03:
Федор, а зачем тебе проверка типов в насквозь нетипизированном языке?  Подмигивание

Я кажется понял, зачем. Если метод хочет принимать в параметре значения определенного типа (определенных типов) - я хочу это описать кодом.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #6 - 30. Июля 2006 :: 14:14
Печать  
Вот и я этого хотел. Но ты сказал, что я зря этого хочу, лишнее это.

Может быть, вернемся к прежней теме?

А если тебе надо, чтобы параметр принимал три типа, то, мне кажется, это нужно указать не в описании параметра, а в коде, который его принимает. Кстати, здесь бы пригодились отложенные исключения.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #7 - 31. Июля 2006 :: 06:40
Печать  
Имхо странного ты хочешь.
В текущей версии можно сделать так:

// Заголовок класса
класс Некий
{
    void ПроцСоСправочником(Справочник парам);
    void ПроцСоСписком(СписокЗначений парам);
};
// Реализация
Процедура ЧастнаяЛюбойПараметр(парам)
    // Парам - справочник или СписокЗначений
КонецПроцедуры

Процедура ПроцСоСправочником(парам) Экспорт
    ЧастнаяЛюбойПараметр(парам)
КонецПроцедуры

Процедура ПроцСоСписком(парам) Экспорт
    ЧастнаяЛюбойПараметр(парам)
КонецПроцедуры

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #8 - 31. Июля 2006 :: 07:10
Печать  
Да нет...

Он хочет Цитата:
в один и тот же параметр а) элемент справочника, б) список значений, в) ваще пропустить параметр

т.е. одновременно иметь два типа либо пропустить и все это с проверкой.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #9 - 31. Июля 2006 :: 09:11
Печать  
sedmin писал(а) 30. Июля 2006 :: 14:14:
А если тебе надо, чтобы параметр принимал три типа, то, мне кажется, это нужно указать не в описании параметра, а в коде, который его принимает. Кстати, здесь бы пригодились отложенные исключения.

Подстава в том, что я не могу в коде проверить, является ли параметр подклассом списка значений.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #10 - 31. Июля 2006 :: 09:15
Печать  
orefkov писал(а) 31. Июля 2006 :: 06:40:
Имхо странного ты хочешь.
В текущей версии можно сделать так:

Саш, я знаю, как можно сделать в текущей версии. Мне не нравится подобное тупое делегирование.
Помимо этого, подобный подход порождает существование (и дублирование) конструкций
Код
Выбрать все
Если ТипЗначенияСтр(Параметр) = "Справочник" Тогда
  ПроцСоСправочником(Параметр);
Иначе
  ПроцСоСписком(Параметр);
КонецЕсли;
 


в клиентском коде. А если такие конструкции все равно есть - то зачем проверка типов?
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #11 - 31. Июля 2006 :: 10:30
Печать  
fez писал(а) 31. Июля 2006 :: 09:11:
Подстава в том, что я не могу в коде проверить, является ли параметр подклассом списка значений.

А вроде Артур что-то вроде "ЯвляетсяОбъектом" или как-то так делал, это не подойдет?

Цитата:
В описании параметра пишешь "СписокЗначений ПарамТамТам"
Цитата:
Так что писать - список значений или неопределенный?


Если ты напишешь "СписокЗначений", то проверка типов пропустит всех наследников списка значений.
Если напишешь "Неопределенный", пропустит всех, дальше можно проверить тип в самом коде метода.

fez
Цитата:
в один и тот же параметр а) элемент справочника, б) список значений, в) ваще пропустить параметр

ИМХО, это вообще не вопрос проверки типов, а вопрос реализации adhoc полиморфизма.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #12 - 31. Июля 2006 :: 11:33
Печать  
kms писал(а) 31. Июля 2006 :: 10:30:
А вроде Артур что-то вроде "ЯвляетсяОбъектом" или как-то так делал, это не подойдет?

Ага, вопрос снят. У меня, как обычно, слишком старая версия Улыбка
  
Наверх
www  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Параметры метода. Типизация и знач-ия по умолч
Ответ #13 - 01. Августа 2006 :: 11:01
Печать  
fez писал(а) 31. Июля 2006 :: 09:15:
Саш, я знаю, как можно сделать в текущей версии. Мне не нравится подобное тупое делегирование.
Помимо этого, подобный подход порождает существование (и дублирование) конструкций
Код
Выбрать все
Если ТипЗначенияСтр(Параметр) = "Справочник" Тогда
  ПроцСоСправочником(Параметр);
Иначе
  ПроцСоСписком(Параметр);
КонецЕсли;
 


в клиентском коде. А если такие конструкции все равно есть - то зачем проверка типов?

Скажу по секрету, фичей "проверка типа параметров" не пользуюсь.
И вообще в 1С стараюсь не завязываться на типы. Там же duck typing.
Если мне приходит объект, у которого есть метод "Крякать", значит, это утка.
То есть применительно к 1С мне не важен тип переданного мне параметра.
Главное, чтобы он реализовывал методы и свойства, к которым я обращаюсь.
Но это так, размышления в сторону от темы.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать