Очевидно, что язык Delphi поддерживает именованные параметры, поскольку они появляются прямо в примере кода Delphi. Delphi поддерживает именованные параметры объектов автоматизации, которые являются объектами, которые реализуют интерфейс IDispatch
. Существуют ограничения на типы, которые могут иметь параметры и типы возврата ; в частности, они не могут быть классами Delphi.
Я не думаю, что удобство, которое вы ищете от именованных параметров, перевесит тот удар по производительности, который вы получите, если каждый вызов метода маршрутизируется через метод IDispatch.Invoke
. Для вызова также может потребоваться сначала использовать GetIDsOfNames
. Вы не видите этого в большем количестве кода, потому что люди обычно избегают позднего связывания. Всегда используйте раннее связывание, чтобы избежать затрат на поиск идентификаторов отправки и косвенных вызовов методов.
Delphi поддерживает необязательные параметры в неавтоматизированном коде, допуская значения по умолчанию. Вы можете опустить фактические параметры для любого параметра со значением по умолчанию, при условии, что вы также опускаете фактические параметры всех последующих параметров - компилятор гарантирует, что объявление функции допускает это.
Я думаю, что необязательные параметры переоценены. Они экономят время для (одного) человека, пишущего код, но не для (многих) людей, читающих код. Любой, кто его читает, должен знать, какими будут значения по умолчанию любых неопределенных параметров, так что вы все равно можете просто явно указать все значения.