Вызов функции CoffeeScript - параметры и скобки - PullRequest
0 голосов
/ 05 июля 2011

Существует такой код Javascript:

var re = /some_regex/g;
return re.exec(link.attr('href'))[0]

Как вызвать это в CoffeeScript В CoffeeScript нет необходимости в скобках для параметров, но есть еще один вызов функции в параметре.

Я пробовал:

re = /some_regex/g
re.exec link.attr 'href' [0]   # compile error: unexpected [
re.exec (link.attr 'href')[0]  # javascript: re.exec((link.attr('href'))[0]);
re.exec (link.attr('href'))[0] # javascript: re.exec((link.attr('href'))[0]);

как это сделать? или я должен сделать

// adding new variable
temp = re.exec link.attr 'href'
temp[0]

Ответы [ 2 ]

3 голосов
/ 05 июля 2011

Пробел после re.exec вызывает проблему, поскольку он заставляет компилятор CoffeeScript думать, что (link.attr('href'))[0] является аргументом.

Правильный способ сделать это - сделать это точно так же, как в JavaScript, без пробела:

re.exec(link.attr('href'))[0]

Если вы действительно сильно хотите использовать синтаксис no-parens в этой строке, это также сработает:

re.exec(link.attr 'href')[0]

(они компилируются одинаковорезультат)

1 голос
/ 07 июля 2011

Разве это не будет понятнее, если вы просто заключите в скобки ту часть, которая абсолютно в ней нуждается, и сделаете все остальное наиболее похожим на CoffeeScript способом?

(re.exec link.attr 'href')[0]

или, возможно, даже (если 'href'это просто еще один атрибут):

(re.exec link.attr.href)[0]

или, еще лучше, чтобы быть более ясным, в соответствии с тем, что вы предложили изначально:

matches = re.exec link.attr.href
matches[0] // idiomatic to re.exec: first element is matched RE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...