При встрече обязательно угощу чашечкой хорошего кофе авторов 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
Бонусы от такого подхода? Описаны в документации, но вот пара наглядных примеров того, что это даёт коду:
Вариант 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
_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 коммент.:
Отправить комментарий