~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ AC4AD2578608A0EE65712713CA505ABE__1718107080 ✰
Заголовок документа оригинал.:
✰ Uniform Function Call Syntax - Wikipedia ✰
Заголовок документа перевод.:
✰ Унифицированный синтаксис вызова функций — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ac/be/ac4ad2578608a0ee65712713ca505abe.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ac/be/ac4ad2578608a0ee65712713ca505abe__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:12:29 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 11 June 2024, at 14:58 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Унифицированный синтаксис вызова функций — Википедия Jump to content

Единый синтаксис вызова функций

Из Википедии, бесплатной энциклопедии

Унифицированный синтаксис вызова функций ( UFCS ) или унифицированный синтаксис вызова ( UCS ) или иногда универсальный синтаксис вызова функций — это функция языка программирования в D , [1] Nim , [2] древесина, [3] и эффект [4] это позволяет любую функцию вызывать , используя синтаксис вызовов методов (как в объектно-ориентированном программировании ), используя получатель в качестве первого параметра и заданные аргументы в качестве остальных параметров. [5] Тот же метод используется в языке сценариев AviSynth под названием «нотация ООП». [6]

UFCS особенно полезен, когда вызовы функций связаны между собой. [1] (поведение аналогично каналам или различным специальным операторам , доступным в функциональных языках для передачи значений через серию выражений ). Это позволяет свободным функциям выполнять роль, аналогичную методам расширения в некоторых других языках. Еще одно преимущество синтаксиса связано с системами завершения в IDE , которые используют информацию о типе для отображения списка доступных функций в зависимости от контекста. Когда программист начинает с аргумента, набор потенциально применимых функций сильно сужается. [7] помощь в обнаружении .

Примеры [ править ]

Язык программирования D [ править ]

int   first  (  int  []   arr  ) 
 { 
     return   arr  [  0  ]; 
  } 

 int  []   addone  (  int  []   arr  ) 
 { 
     int  []   результат  ; 
      foreach   (  значение  ;   arr  )   { 
         результат   ~=   значение   +   1  ; 
      } 
     вернуть   результат  ; 
  } 

 void   main  () 
 { 
     auto   a   =   [  0  ,   1  ,   2  ,   3  ]; 

      // все нижеследующее верно и эквивалентно 
     int   b   =   first  (  a  ); 
      интервал   с   =   а  .   первый  ; 

      // связывание 
     int  []   e   =   a  .   добавить один  ().   добавить один  (); 
  } 

Язык программирования Ним [ править ]

type   Vector   =   кортеж  [  x  ,   y  :   int  ] 

 proc   add  (  a  ,   b  :   Vector  ):   Vector   = 
   (  a  .  x   +   b  .  x  ,   a  .  y   +   b  .  y  ), 

 let 
   v1   =   (  x  :   -  1  ,   y)  :   4  ) 
   v2   =   (  x  :   5  ,   y  :   -  2  ) 

   # все следующие верны 
   v3   =   add  (  v1  ,   v2  ) 
   v4   =   v1  .   добавить  (  v2  ) 
   v5   =   v1  .   добавить  (  v2  ).   добавить  (  v4  ) 

Предложение C++ [ править ]

Предложения по унификации синтаксиса функций-членов и свободных функций обсуждались с первых лет стандартизации C++ . Глассбороу (2004) предложил единый синтаксис вызова (UCS), позволяющий вызывать специально аннотированные свободные функции с нотацией функций-членов. [8] во второй раз предложил добавить его к C++. В 2016 году Бьярн Страуструп [9] и Херб Саттер , [7] уменьшить неоднозначность решения между написанием свободных функций и функций-членов, упростить написание шаблонного кода . Многие программисты испытывают искушение написать функции-члены, чтобы получить преимущества синтаксиса функций-членов (например, « точечное автозаполнение » для вывода списка функций-членов ); [10] однако это приводит к чрезмерной связи между классами . [11] В 2023 году это снова было предложено Хербом Саттером. [12] требуя новой информации и идей, а также экспериментальной реализации в компиляторе cppfront.

Использование термина в Rust [ править ]

До 2018 года это было обычным явлением. [13] использовать этот термин при ссылке на синтаксис квалифицированного/явного пути и, чаще всего, синтаксис полного пути : поскольку возможно иметь несколько признаков, определяющих один и тот же метод, реализованный в одной и той же структуре, необходим механизм для устранения неоднозначности, какой признак должен быть использовал. Функции-члены также можно использовать как свободные функции через квалифицированный путь (в пространстве имен). Термин UFCS неверен для такого использования, поскольку он позволяет использовать методы как свободные функции (в пространстве имен), но не использовать свободные функции в качестве методов.

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б «Программирование на D — синтаксис вызова универсальных функций (UFCS)» . Ддили.орг . Проверено 1 октября 2017 г.
  2. ^ "Ним на примере - Процессы" . nim-by-example.github.io . Проверено 19 мая 2024 г.
  3. ^ «Язык программирования Кока» . koka-lang.github.io . Проверено 19 мая 2024 г.
  4. ^ «Язык Эффекта: Введение в Эффект» . Эффект Языка . Проверено 19 мая 2024 г.
  5. ^ «Функции — язык программирования D» . Дланг.орг . Проверено 1 октября 2017 г.
  6. ^ «Операторы — Avisynth wiki» . a.function(b) эквивалентно function(a, b)
  7. ^ Перейти обратно: а б « Унифицированный синтаксис вызовов» ( PDF) . Isocpp.org . Проверено 1 октября 2017 г.
  8. ^ Фрэнсис Глассбороу (2 мая 2004 г.). «N1585: унифицированный синтаксис вызовов (повторное открытие общедоступных интерфейсов)» (PDF) . Проверено 17 декабря 2018 г.
  9. ^ « Предложение UFCS» ( PDF) . Open-std.org . Проверено 1 октября 2017 г.
  10. ^ «использование IntelliSense» . Msdn.microsoft.com . Проверено 1 октября 2017 г.
  11. ^ «Как функции, не являющиеся членами, улучшают инкапсуляцию» . Drdobbs.com . Проверено 1 октября 2017 г.
  12. ^ Саттер, Херб (13 октября 2023 г.). «Единый синтаксис вызова функций (UFCS)» (PDF) .
  13. ^ «Переименуйте UFCS, чтобы точно отразить его функциональность. · Проблема № 1140 · ржавчина-lang/rfcs» . Гитхаб . Проверено 19 мая 2024 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: AC4AD2578608A0EE65712713CA505ABE__1718107080
URL1:https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax
Заголовок, (Title) документа по адресу, URL1:
Uniform Function Call Syntax - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)