19 октября 2011 г.

CoffeeScript и карамельный сахар

При встрече обязательно угощу чашечкой хорошего кофе авторов coffeescript. Хотя бы за то, что добавили оператор => для определения методов.
Бонусы от такого подхода? Описаны в документации, но вот пара наглядных примеров того, что это даёт коду:

Вариант 1. сохраняем контекст:

  initHandlers: ->
    @bind "setQueries", (data) =>
      _.each data.objects, (query) =>
        id = query.segment_id ? 'none'
        segment = @model.segments.detect (seg) ->
          seg.id == id
        if not segment
          segment = new Segment id: id, text: query.segment
          @model.segments.add segment
        segment.queries.add query

Вариант 2. мучаемся:

  initHandlers: ->
    _self = @
    @bind "setQueries", (data) =>
      _.each data.objects, (query) =>
        id = query.segment_id ? 'none'
        segment = _self.model.segments.detect (seg) ->
          seg.id == id
        if not segment
          segment = new Segment id: id, text: query.segment
          _self.model.segments.add segment
        segment.queries.add query

И это один из самых простых случаев.

0 коммент.:

Отправить комментарий