Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8  ОтправитьПечать
Очень популярная тема (более 25 ответов) Повторная передача параметра по умолчанию (число прочтений - 45580 )
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #75 - 26. Июня 2006 :: 18:09
Печать  
kms писал(а) 26. Июня 2006 :: 18:01:
Ну а если сделать прохождение проверки NIL в классе опциональным?

Единственно, это надо делать опять же модификатором типа.
Типа того:

Цитата:
void ЗаполнитьШапку(__ALLOW__NIL__ СписокЗначений спШапка="");



Добавлю, что модификатор __ALLOW__NIL__ и инициализатор ="" не равнозначны.
Первый указывает на возможность NIL на прохождение проверки типов, а второй - инициализирует значение переменной, не обязательно нилом.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #76 - 26. Июня 2006 :: 18:10
Печать  
sedmin писал(а) 26. Июня 2006 :: 18:09:
Ну наконец-то. Хоть одного на свою сторону переманил.  Улыбка

Да просто надоел ты со своим нилом  Смех
  

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: Повторная передача параметра по умолчанию
Ответ #77 - 26. Июня 2006 :: 18:10
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:56:
Надо только сделать еще один шаг и разрешить передать этот параметр дальше. Услышь меня.  Улыбка

Давай тогда сделаем шаг еще и в другую сторону. Почему мы ограничиваемся только двумя типами параметров? Давай создадим синтаксис, с помощью которого мы сможем указать, что метод принимает три типа параметров. Четыре типа. Да чего там, неограниченное количество типов!

Тогда и Палыч будет доволен и начнет пользоваться типизацией. Да, Палыч? Подмигивание
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #78 - 26. Июня 2006 :: 18:12
Печать  
fez писал(а) 26. Июня 2006 :: 18:10:
sedmin писал(а) 26. Июня 2006 :: 17:56:
Надо только сделать еще один шаг и разрешить передать этот параметр дальше. Услышь меня.  Улыбка

Давай тогда сделаем шаг еще и в другую сторону. Почему мы ограничиваемся только двумя типами параметров? Давай создадим синтаксис, с помощью которого мы сможем указать, что метод принимает три типа параметров. Четыре типа. Да чего там, неограниченное количество типов!

Тогда и Палыч будет доволен и начнет пользоваться типизацией. Да, Палыч? Подмигивание

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

Т.е. в этом случае сейчас проверка типов не проходит?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #79 - 26. Июня 2006 :: 18:13
Печать  
Потому что NIL - это не тип. Это особенный тип.

И переменной я здесь пользоваться не хочу. Так как в этом случае обязательно найдется придурок, который использует ее не там, где надо, и она чем-нибудь заполнится.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #80 - 26. Июня 2006 :: 18:15
Печать  
kms писал(а) 26. Июня 2006 :: 18:12:
А, кстати, я правильно Палыча понимаю, что его не устраивает проверка типов для наследников, если в типизации параметра указать базовый класс?


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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #81 - 26. Июня 2006 :: 18:18
Печать  
kms писал(а) 26. Июня 2006 :: 18:07:
Вот возьмем C++.

Мы как-то уже выясняли (на примере с "полиморфизмом"), что сравнивать 1С++ и С++ - некорректно. 1С++ ближе к питону. В питоне кстати тоже типизации нет. Вообще. И Null'а нету.

Понятно, что для языка типа С++ со строгой типизацией - NULL жизненно необходим.
А вот зачем вам нужна типизация в 1С - я так и не услышал.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Повторная передача параметра по умолчанию
Ответ #82 - 26. Июня 2006 :: 18:20
Печать  
sedmin писал(а) 26. Июня 2006 :: 18:13:
И переменной я здесь пользоваться не хочу. Так как в этом случае обязательно найдется придурок, который использует ее не там, где надо, и она чем-нибудь заполнится.

Воспользуйся функцией.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #83 - 26. Июня 2006 :: 18:20
Печать  
Дядьки, вопрос на засыпку

объявление:
Код
Выбрать все
void _ТестПарам2(Неопределенный парам="СписокЗначений");
 


Чем парам будет инициализирован?
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #84 - 26. Июня 2006 :: 18:27
Печать  
sedmin писал(а) 26. Июня 2006 :: 18:15:
kms писал(а) 26. Июня 2006 :: 18:12:
А, кстати, я правильно Палыча понимаю, что его не устраивает проверка типов для наследников, если в типизации параметра указать базовый класс?


Ну это же не проблема для настоящих индейцев. Ведь так, kms?

Не знаю еще. Вроде не проблема.
А ты как предлагаешь решать? Передавать в класс значение базового класса или пропускать наследников при проверке типов?
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #85 - 26. Июня 2006 :: 18:47
Печать  
sedmin писал(а) 26. Июня 2006 :: 17:45:
Приведу реальный код, чтобы вам было легче меня критиковать.

Код
Выбрать все
Класс МойДокумент=МойДокумент.txt{
  void Новый(СписокЗначений спШапка="", ТаблицаЗначений тзТабличнаяЧасть="");
  void ЗаполнитьШапку(СписокЗначений спШапка="");
}

Процедура Новый(спШапка, тзТабличнаяЧасть)
  База().Новый();
  ПриСозданииДокументов(База("Документ")); //Совместимость со старым кодом - сразу все не переделаешь.
  Сам.ЗаполнитьШапку(спШапка);
КонецПроцедуры
 



Ну зачем мне, если у меня уже есть метод ЗаполнитьШапку(), как-то извращаться и что-то делать с спШапка? Ну не логично же это. Любые действия с спШапка тут будут лишними.

Следовательно, такое использование надо разрешить.


Короче, делай так:
Код
Выбрать все
void Новый(СписокЗначений спШапка="СписокЗначений", ТаблицаЗначений тзТабличнаяЧасть="ТаблицаЗначений");
 


Побольше отдыхай, а в освободившееся время читай документацию.
Пожалуйста, вслух, всем же интересно Улыбка


P.S.
Разумеется, я понимаю, что это другое решение, как раз то, которое я и предлагал с самого начала.
Но как решение твоей текущей задачи пойдет, а там видно будет.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #86 - 26. Июня 2006 :: 19:03
Печать  
kms писал(а) 26. Июня 2006 :: 18:27:
sedmin писал(а) 26. Июня 2006 :: 18:15:
kms писал(а) 26. Июня 2006 :: 18:12:
А, кстати, я правильно Палыча понимаю, что его не устраивает проверка типов для наследников, если в типизации параметра указать базовый класс?


Ну это же не проблема для настоящих индейцев. Ведь так, kms?

Не знаю еще. Вроде не проблема.
А ты как предлагаешь решать? Передавать в класс значение базового класса или пропускать наследников при проверке типов?

Сейчас проверил - нет проблем с передачей наследников в качестве параметров типа базового класса.
Тогда о чем говорил Палыч?
  

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: Повторная передача параметра по умолчанию
Ответ #87 - 26. Июня 2006 :: 19:27
Печать  
kms писал(а) 26. Июня 2006 :: 18:47:
Короче, делай так:
Код
Выбрать все
void Новый(СписокЗначений спШапка="СписокЗначений", ТаблицаЗначений тзТабличнаяЧасть="ТаблицаЗначений");
 


Побольше отдыхай, а в освободившееся время читай документацию.


Ээээ, а можно для лишенцев рассказать, где такое в документации написано?
Я, кажется, начинаю понимать, почему пустая строка передается как пустое значение без типа...
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #88 - 26. Июня 2006 :: 19:38
Печать  
Для всех нас братьев пилотов соседнюю тему завел: http://www.1cpp.ru/forum/YaBB.pl?num=1151346979
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Повторная передача параметра по умолчанию
Ответ #89 - 27. Июня 2006 :: 04:50
Печать  
Согласен, найденная фича позволяет решить проблему, и, кроме того, адепты чистоты языка будут довольны найденным решением.

Но для удобства пользования мне хотелось бы иметь просто признак пропущенного параметра. И хотелось бы иметь возможность передать этот признак дальше по цепочке без потери возможности контроля типов.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 
ОтправитьПечать