Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Цепочка методов , также известная как идиома именованных параметров , является распространенным синтаксисом для вызова нескольких вызовов методов в объектно-ориентированных языках программирования . Каждый метод возвращает объект, что позволяет объединить вызовы в один оператор, не требуя переменных для хранения промежуточных результатов. [1]

Обоснование [ править ]

Объявления локальных переменных - это синтаксический сахар . [2]

Цепочка методов устраняет дополнительную переменную для каждого промежуточного шага. Разработчик избавлен от когнитивного бремени именования переменной и ее запоминания.

Цепочка методов упоминается как «крушение поезда» из-за увеличения числа методов, которые идут один за другим в одной строке, что происходит по мере того, как все больше методов объединяются в цепочку. [3]

Похожий синтаксис - это каскадирование методов , когда после вызова метода выражение оценивает текущий объект, а не возвращаемое значение метода. Каскадирование может быть реализовано с использованием цепочки методов, когда метод возвращает сам текущий объект . Каскадирование - ключевая техника в свободных интерфейсах , и поскольку цепочка широко применяется в объектно-ориентированных языках, в то время как каскадирование - нет, эту форму «каскадирование за цепочкой с возвратом этого » часто называют просто «цепочкой». И цепочка, и каскадирование пришли из языка Smalltalk .

Хотя цепочка является синтаксисом, она имеет семантические последствия, а именно требует, чтобы методы возвращали объект, и при реализации каскадирования через цепочку это должен быть текущий объект. Это предотвращает использование возвращаемого значения для каких-либо других целей, например, для возврата значения ошибки .

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

Распространенным примером является iostream в C ++ , где, например, <<возвращается левый объект, что позволяет создавать цепочки.

Сравнивать:

a  <<  b  <<  c ;

эквивалент:

a  <<  b ; a  <<  c ;

Другой пример в JavaScript использует встроенные методы Array:

кое-что  . фильтр ( x  =>  x . count  >  10 )  . sort (( a ,  b )  =>  a . count  -  b . count )  . карта ( x  =>  x . имя )

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

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

[4]

  1. ^ «Применение цепочки методов» . http://firstclassthoughts.co.uk/ : Мысли первого класса. Архивировано из оригинала 2011-02-22 . Проверено 13 апреля 2011 . Чтобы упростить повторяющиеся взаимодействия объектов с одним и тем же объектом, следует применить старый трюк Method Chaining, берущий начало в мире Smalltalk. Идея заключается в том , чтобы вернуть методы , this а не void, влияя таким образом особенно set() и add() методы. Цепочка методов возникла во время стремления разработчиков Smalltalk минимизировать количество ключевых слов в языке, что привело к открытию того, что void ключевое слово является ненужным !. CS1 maint: обескураженный параметр ( ссылка )
  2. ^ «CMSC 631 - Анализ и понимание программ» (PDF) . • Синтаксический сахар для локальных объявлений - пусть x = e1 в e2 является сокращением от (λx.e2) e1
  3. ^ Мартин, Роберт Сесил (2008). Чистый код: руководство по созданию гибкого программного обеспечения . Прентис Холл . ISBN 0-13-235088-2. CS1 maint: обескураженный параметр ( ссылка )
  4. ^ Объединение методов в PHP

Внешние ссылки [ править ]

  • Создание DSL в Java с использованием концепции цепочки методов