Created
September 14, 2011 04:39
-
-
Save jimmycuadra/1215863 to your computer and use it in GitHub Desktop.
Syntax question for CoffeeScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Given a function that accepts a function followed by a non-function argument... | |
foo = (callback, name) -> | |
console.log "Calling callback #{name}..." | |
callback() | |
# you end up with a line starting with | |
# a comma which just feels wrong... | |
foo -> | |
console.log "Callback called!" | |
, "bar" | |
# or an awkard set of parens which generates | |
# unnecessary parens in the compiled source... | |
foo (-> | |
console.log "Callback called!" | |
), "bar" | |
# or a syntax error. | |
foo -> | |
console.log("Callback called!"), "bar" | |
# Wat do? What's the preferred way to write this? |
I have to admit though that I do find it a bit inconsistent/odd that when arguments are an object (key/value), indentation alone is enough to indicate calling:
somefunc
foo: '1'
bar: '2'
but when they’re just positional arguments (whether functions or not), there’s a requirement to either add parentheses, or put one argument and a comma on the same line as the call:
somefunc(
'yay'
(spam) -> eggs
)
or:
somefunc 'yay',
(spam) -> 'eggs'
I’d personally prefer if this was also interpreted as a call instead of a syntax error:
somefunc
'yay'
(spam) -> 'eggs'
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@jimmycuadra, in your last version, the commas also aren’t necessary: