Как передать функцию в качестве параметра с многострочным массивом в IDEA?
Предположим, у меня есть эта функция в файле coffeescript
test = (arr, fn) ->
console.log item for item in arr
fn()
Вот как я это называю
test [1, 2, 3, 4, 5], ->
console.log "start"
# function body
console.log "finish"
Все в порядке, пока массив не станет слишком длинным, и я хочу разбить его на несколько строк. Как это
test ["first element here",
"second element here",
"third element here",
"fourth element here",
"fifth element here"], ->
console.log "start"
# function body
console.log "finish"
Это верно, так как компилятор coffeescript компилирует его именно так, как я ожидаю, но IDEA говорит, что неожиданный отступ в console.log "start"
линия. Я нажимаю Ctrl+Alt+L, и IDEA дает мне это
test ["first element here",
"second element here",
"third element here",
"fourth element here",
"fifth element here"], ->
console.log "start"
# function body
console.log "finish"
что неверно, так как в этом случае пустая функция передается в качестве параметра. Это ошибка, или я могу исправить это самостоятельно?
3 ответа
Поддержка JetBrains сказала мне, что это ошибка, поэтому я открыл здесь проблему.
Возможно, вам придется добавить немного отступ в тело функции, чтобы оно заработало:
test ["first element here",
"second element here",
"third element here",
"fourth element here",
"fifth element here"], ->
console.log "start"
# function body
console.log "finish"
# ^ This column is indented two from the start of the array
# ^ Array starts here
По крайней мере, это работает для меня в IntelliJ.
Возможно, ошибка в плагине CoffeeScript IDEA, как упомянуто пользователем1737909.
Но если вы хотите решить эту проблему прямо сейчас, я бы рекомендовал просто использовать переменную для массива и двигаться дальше:
arr = [
"first element here"
"second element here"
"third element here"
"fourth element here"
"fifth element here"
]
test arr, ->
console.log "start"
# function body
console.log "finish"