This article needs additional citations for verification. (May 2008) |
Цепочка методов — это распространенный синтаксис для вызова нескольких методов в объектно-ориентированных языках программирования . Каждый метод возвращает объект, что позволяет объединять вызовы в одну цепочку без необходимости использования переменных для хранения промежуточных результатов. [1]
Объявления локальных переменных — это синтаксический сахар . [2]
Цепочка методов устраняет дополнительную переменную для каждого промежуточного шага. Разработчик избавлен от когнитивной нагрузки по названию переменной и удержанию ее в памяти.
Цепочка методов иногда упоминается как способ создания «катастрофы поезда» из-за увеличения числа методов, которые следуют один за другим в одной строке, что происходит по мере объединения большего количества методов в цепочку. [3]
Похожий синтаксис — каскадирование методов , где после вызова метода выражение вычисляется для текущего объекта, а не возвращаемого значения метода. Каскадирование может быть реализовано с помощью цепочки методов, когда метод возвращает сам текущий объект . Каскадирование — ключевой прием в текучих интерфейсах , и поскольку цепочка широко реализована в объектно-ориентированных языках, а каскадирование — нет, эту форму «каскадирования-по-цепочке путем возврата этого » часто называют просто «цепочкой». И цепочка, и каскадирование пришли из языка Smalltalk .
Хотя цепочка — это синтаксис, она имеет семантические последствия, а именно, что требует методов для возврата объекта, и если каскадирование реализуется через цепочку, это должен быть текущий объект. Это предотвращает использование возвращаемого значения для какой-либо другой цели, например, для возврата значения ошибки .
Типичным примером является iostream в C++ , где, например, <<
возвращается левый объект, что позволяет создавать цепочки.
Сравнивать:
а << б << в ;
эквивалентно:
а << б ; а << в ;
Другой пример на JavaScript использует встроенные методы Array:
что - то.фильтр ( x = > x.кол - во > 10 ) .сортировать ( ( a , b ) = > a.кол - во - b.кол - во ) .карта ( x = > x.имя )
Для упрощения повторяющихся взаимодействий объектов с одним и тем же объектом следует применить старый трюк цепочки методов, берущий начало в мире Smalltalk. Идея состоит в том, чтобы позволить методам возвращатьthis
вместоvoid
, тем самым влияя особенно наset()
иadd()
методы. Цепочка методов возникла во время стремления разработчиков Smalltalk минимизировать количество ключевых слов в языке, что привело к открытию того, чтоvoid
является ненужным ключевым словом!.
• Синтаксический сахар для локальных объявлений - let x = e1 in e2 является сокращением от (λx.e2) e1