Как относиться к отдельным значениям coffeescript как к массивам - PullRequest
3 голосов
/ 09 декабря 2011

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

В идеале код должен выглядеть так:

a = for i in j()
  i++

, но j может вернуть либо 1, либо [1, 2, 3].

Я даже не вижу хорошего способа как-нибудь проверить, возвращает ли j массив.Может быть, у coffeescript есть какая-то хорошая система идентификации типов, чтобы я мог сделать

if j().isArray then j() else [j()] 

или что-то в этом роде?

Кто-нибудь знает о синтаксически привлекательном способе максимально скрыть логику преобразования массива?

Ответы [ 2 ]

12 голосов
/ 09 декабря 2011
[].concat j()

будет копировать результат, если массив, обернуть в противном случае.

2 голосов
/ 09 декабря 2011
asArray = (j) -> if j instanceof Array then j else [j]

Тогда звоните как

a = for i in asArray(j())
  i++
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...