0

問題を示すためにコードを単純化しました。この Coffeescript スニペットを使用すると、次のようになります。

$("<div>")
.text "hi"
.appendTo "body"

私はそれが次のようにコンパイルされることを期待しています:

$("<div>").text("hi").appendTo("body")

代わりに行うことは次のとおりです。

$("<div>").text("hi".appendTo("body"))

ブラケットをそのまま使用できることがわかりましたが、これは Coffeescript の書き方ではないと思います。

目的の出力にコンパイルされるように、どのように記述すればよいか誰か教えてもらえますか? どうもありがとうございました。

4

3 に答える 3

4

括弧を追加します。

良いスタイルである限り、シンタックスを省略するのは意図が雑然としている場合に限るべきです。この場合、それらを省略すると意図が失われます。形態は機能に従う。先例を宣言するにはここに括弧が必要であり、Coffeescript はその理由で括弧をサポートしています。

于 2012-08-22T16:36:40.560 に答える
3

ブラケットをそのまま使用できることがわかりましたが、これは Coffeescript の書き方ではないと思います。

CoffeeScript の括弧はオプションですが、使用してはいけないという意味ではありません。それらを自由に使用してください!場合によっては、あなたのように、それらが必要になることさえあります。

私にとって、オプションの括弧による大きな利点は、匿名のコールバックや、括弧が次のように複数の行にまたがるその他の場合です。

foo 'bar', (err, res) ->
  # Do stuff

私にとってどちらが優れているか

foo('bar', (err, res) ->
  # Do stuff
)

でも、それがあなたのスタイルだとしても、がんばってください!

したがって、要約すると、次のように記述します。

$("<div>")
  .text("hi")
  .appendTo("body")

編集:または

$("<div>").text("hi").appendTo("body")

ただし、この特定のケースでは、もちろん次のことができます。

$("<div>", text: "hi").appendTo("body")

ティムタウディ ;)

于 2012-08-22T16:37:29.000 に答える
0

coco とlivescript (npm または github 上) はどちらも coffeescript から派生したものであり、より「スペースに敏感」であるため、次のことが可能になります。

$ "<div>" .text "hi" .appendTo "body"

$("<div>")
  .text "hi"
  .appendTo "body"

どちらもコンパイルします

$("<div>").text("hi").appendTo("body");
于 2012-08-23T04:17:58.927 に答える