LiveScript でつまずいたこと
関数呼び出し中の do
hoge-func ham, tomato, beacon do a: \foo b: \bar
が:
hogeFunc( ham, tomato, beacon, { a: 'foo', b: 'bar' } );
になって欲しいのだが、時々こういう風になる:
hogeFunc( ham, tomato, beacon({ a: 'foo', b: 'bar' }) );
うん、beacon
はただの変数で、関数じゃねーよwwwwww
もうやだこの altJS…………。
地雷だよね………(´Д⊂グスン
これは、do
を使う前の引数が変数だとなるらしい。
なので、今までやっていた通り:
hoge-func ham, tomato, beacon, a: \foo b: \bar
こんな風に書くことにする。
変数?方式の関数定義は上の方に変数がいっぱい溜まるし、普通に書きたいよー
こーいうのは:
apply-options = (options) !-> heating-power := options.power number-of-people-of-cook := options.number_of_people
こんな風に書ける:
!function apply-options (options) heating-power := options.power number-of-people-of-cook := options.number_of_people
関数を渡す関数内で呼び出し元の this
を使いたい
これは私のじゃっばすくりぷよぢからが 1200 万パワーに満たないために発生したことなんだけど:
class Cook (@skillet) -> cook: (foods) !-> foods.for-each (food) !-> # skillet は Cook インスタンスのものだが、このコンテキスト(for-each に渡された関数)においては # @skillet はないため、あぼーんする @skillet.push food
こういうことをやっていたために、実行すると激しくあぼーんしたり、挙動がおかしくなっていた。
LiveScript の公式サイトを目を皿のようにして眺めたところ、~>
を使うと (・∀・)イイ!! らしいことがわかったので、このように変えた:
cook: (foods) !-> # 見づらいと思うけど、矢印(`->')の横棒(`-')をチルダ(`~')にすると(`~>')、 # lsc がうまく計らってくれる。 foods.for-each (food) !~> @skillet.push food ``