Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

1 Июль 2022, 11:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: Странность с пропущенными параметрами.  (Прочитано 3811 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 1 108


« Ответ #60886: 10 Январь 2022, 21:30 »

https://git.libreoffice.org/core/+/8e323fcacebad1afe9d867b846722a6b9bf20f78

Всё зависит от режима (их три).
Заметил, что в "родном" режиме (без всяких опций) необязательный параметр не инициализируется значением по умолчанию, это так, но вот если задан тип данных, то он сохраняется. Значит, задание типа данных для необязательных аргументов имеет смысл.

Sub Foo(Optional bStatus As Boolean, Optional nIndex%, Optional nValue&)
   If IsMissing(bStatus) Then bStatus = 2
   Print TypeName(bStatus); "="; bStatus  '<< displays: Boolean=True, not Integer=2

   If IsMissing(nIndex) Then nIndex = True
   Print TypeName(nIndex); "="; nIndex  '<< displays: Integer=-1, not Boolean=True

   If IsMissing(nValue) Then nValue = "string"
   Print TypeName(nValue); "="; nValue  '<< displays: Long=0, not String=string
End Sub

В VBA опциональные параметры, проверяемые функцией IsMissing(), должны иметь тип Variant. В StarBasic - любой.
« Последнее редактирование: 10 Январь 2022, 21:36 от eeigor » Записан

Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
Страниц: « 1 2 3   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!