Как передать две анонимные функции в качестве аргументов в CoffeScript? - PullRequest
55 голосов
/ 24 июня 2011

Я хочу передать две анонимные функции в качестве аргументов для наведения jQuery, например, так:

$('element').hover(
  function() {
    // do stuff on mouseover
  },
  function() {
    // do stuff on mouseout
  }
);

Это просто с одной - hover -> - но каков правильный синтаксис в CoffeeScript для двух?Я пробовал ...hover ->, ...hover( ->... и т. Д., Но ничто не дает мне вышеуказанную структуру.

Ответы [ 4 ]

52 голосов
/ 25 июня 2011

Я думаю, что проблема заключается в использовании однострочных комментариев //.Однострочные комментарии, заключенные в /* .. */, работают нормально.Вот эквивалентный пример с чем-то отличным от комментария.

$('element').hover(
  -> console.log("first")
  -> console.log("second")
)

Или с комментариями, использующими /* .. */.

$('element').hover(
  -> /* first */
  -> /* second */
)

Вы можете попробовать эти примеры под Попробуйте CoffeeScript таб.CoffeeScript добавляет оператор return для возврата последнего выражения функции.Если вам нужны обычные функции, которые ничего не делают и не содержат return в конце, попробуйте:

$('element').hover(
  () ->
  () ->
)
// $('element').hover(function() {}, function() {});
24 голосов
/ 24 июня 2011

Поставьте круглые скобки вокруг анонимных функций.

21 голосов
/ 23 апреля 2012

Другой способ - использовать обратную косую черту после функции вызывающей стороны, запятая должна быть правильно вставлена.

$('element').hover \
  -> # do stuff on mouseover
  ,
  -> # do stuff on mouseout
8 голосов

Без скобок и обратной косой черты :

f ->
  0
, ->
  1

Вывод на 1.7.1:

f(function() {
  return 0;
}, function() {
  return 1;
});
...