Upcoming SlideShare
×

# CoffeeScript

888 views

Published on

Published in: Technology
0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total views
888
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
5
0
Likes
0
Embeds 0
No embeds

No notes for slide

### CoffeeScript

1. 1. CoffeeScript 2012/01/18 h13i32maru@Twitter maruyama-r@KLab
3. 3. JavaScript
4. 4. JavaScriptって結構大変• ファイルのinclude機構が無い• プロトタイプ指向• 動的スコープ• 不思議なthis• などなど
5. 5. そこで、
6. 6. CoffeeScript
7. 7. CoffeeScriptとは• JavaScriptにコンパイル可能な小さな言語• RubyやPythonから色々取り込んでる• @jashkenasが作ってる - 他にもruby-processingなど• http://coffeescript.org/
8. 8. Language Reference 翻訳してみたhttp://d.hatena.ne.jp/h13i32maru/ 20120119/1326955300
9. 9. 関数func = (arg1, arg2) -> arg1 * arg2func = (arg1, arg2) -> x = arg1 * arg2 x * x
10. 10. レキシカルスコープouter = 1changeNumbers = -> inner = -1 outer = 10inner = 20changeNumbers()alert [outer, inner]
11. 11. 内包表記eat food for food in [toast, cheese, wine]countdown = (num * num for num in [10..1])yearsOld = max: 10, ida: 9, tim: 11ages = for child, age of yearsOld "#{child} is #{age}"
12. 12. 配列のスライスとレンジnumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]middle = numbers[3..6]numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]numbers[3..6] = [-3, -4, -5, -6]
13. 13. 比較if x is 0if y isnt 100cholesterol = 127healthy = 200 > cholesterol > 60
14. 14. 存在演算子solipsism = true if mind? and not world?zip = lottery.drawWinner?().address?.zipcode
15. 15. クラスと継承class Animal constructor: (@name) -> move: (meters) -> alert @name + " moved #{meters}m."class Snake extends Animal move: -> alert "Slithering..." super 5
16. 16. 展開代入theBait = 1000theSwitch = 0[theBait, theSwitch] = [theSwitch, theBait]
17. 17. 関数束縛Account = (customer, cart) -> @customer = customer @cart = cart \$(.shopping_cart).bind click, (event) => @customer.purchase @cart
18. 18. 文字列内変数展開author = "Wittgenstein"quote = "A picture is a fact. -- #{ author }"
19. 19. 全てが式i = 0res = while i isnt 10 i++ i * i#1,4,9,16,25,36,49,64,81,100alert res
20. 20. ビルドシステム• Cake : CoffeeScript付属のビルドシステム• MakeやRakeみたいなもの• ファイルの結合もできるよ！
21. 21. 他にも• YAML的なオブジェクトの書き方• if/unlessの後置記法• JavaScriptの埋め込み• ヒアドキュメント• 可変引数• デフォルト引数 などなど
22. 22. 翻訳をしてみて• コードのおかげでなんとなく翻訳できる• 7600文字の翻訳で10時間くらい• ジョークっぽいのがあったけど上手く訳せず• 実は既に翻訳があったりするｗｗｗ
23. 23. おわり