Подтвердить что ты не робот

Совпадение шаблонов в coffeescript

Я борюсь с поиском хороших примеров coffeescript и сопоставления шаблонов, кроме этих примеров:

{x, y} = sprite
css = {opacity, fontFamily}

Я использовал сопоставление образцов в Erlang, но я борюсь с поиском более продвинутых примеров в coffeescript, которые иллюстрируют, что именно возможно.

4b9b3361

Ответ 1

А, я думал, что я узнал эти примеры: http://pragprog.com/magazines/2011-05/a-coffeescript-intervention:)

Сравнение шаблонов CoffeeScript (более формально называемое "назначение деструктуризации", чтобы отличить его от сопоставления шаблонов в Erland и Scala, что совсем другое) может использоваться для извлечения информации из очень сложных структур данных. Вот пример официального документа :

{poet: {name, address: [street, city]}} = futurists

что по существу эквивалентно

poet = futurists.poet
name = poet.name
street = poet.address[0]
city = poet.address[1]

На практике, однако, назначение деструктуризации в основном используется для захвата одного или двух свойств объекта, как в приведенных вами примерах, или для получения деталей из массива. Например, вы можете поменять значения двух переменных a и b, написав

[a, b] = [b, a]

и, используя значки, вы можете получить первое и последнее значения массива arr, написав

[first, middle..., last] = arr

Надеюсь, это поможет. В моей книге, конечно, больше примеров, CoffeeScript: ускоренная разработка JavaScript.

Ответ 2

Существует библиотека, которая обеспечивает способ записи Erlang-подобных конструкций прямо в coffeescript без предварительной компиляции, просто завершайте ее в специальной функции. Вы можете найти его здесь: https://github.com/nogizhopaboroda/f_context.