SlideShare a Scribd company logo
CoffeeScript


                2012/01/18
       h13i32maru@Twitter
         maruyama-r@KLab
自己紹介
• 丸山 亮(h13i32maru) 最近はJSを触ってます
• KLab株式会社所属
32   http://blog.h13i32maru.jp

     http://twitter.com/h13i32maru

     https://www.facebook.com/ryo.maruyama

     https://github.com/h13i32maru
JavaScript
JavaScriptって結構大変

• ファイルのinclude機構が無い
• プロトタイプ指向
• 動的スコープ
• 不思議なthis
• などなど
そこで、
CoffeeScript
CoffeeScriptとは

• JavaScriptにコンパイル可能な小さな言語
• RubyやPythonから色々取り込んでる
• @jashkenasが作ってる
 - 他にもruby-processingなど
• http://coffeescript.org/
Language Reference
        翻訳してみた
http://d.hatena.ne.jp/h13i32maru/
      20120119/1326955300
関数
func = (arg1, arg2) -> arg1 * arg2




func = (arg1, arg2) ->
 x = arg1 * arg2
 x * x
レキシカルスコープ
outer = 1
changeNumbers = ->
  inner = -1
  outer = 10

inner = 20

changeNumbers()

alert [outer, inner]
内包表記
eat food for food in ['toast', 'cheese', 'wine']




countdown = (num * num for num in [10..1])




yearsOld = max: 10, ida: 9, tim: 11
ages = for child, age of yearsOld
   "#{child} is #{age}"
配列のスライスとレンジ
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]
比較
if x is 0

if y isnt 100



cholesterol = 127

healthy = 200 > cholesterol > 60
存在演算子
solipsism = true if mind? and not world?




zip = lottery.drawWinner?().address?.zipcode
クラスと継承
class Animal
  constructor: (@name) ->

  move: (meters) ->
    alert @name + " moved #{meters}m."

class Snake extends Animal
  move: ->
    alert "Slithering..."
    super 5
展開代入
theBait   = 1000
theSwitch = 0

[theBait, theSwitch] = [theSwitch, theBait]
関数束縛
Account = (customer, cart) ->
  @customer = customer
  @cart = cart

  $('.shopping_cart').bind 'click', (event) =>
    @customer.purchase @cart
文字列内変数展開
author = "Wittgenstein"
quote = "A picture is a fact. -- #{ author }"
全てが式
i = 0
res = while i isnt 10
  i++
  i * i

#1,4,9,16,25,36,49,64,81,100
alert res
ビルドシステム

• Cake : CoffeeScript付属のビルドシステム
• MakeやRakeみたいなもの
• ファイルの結合もできるよ!
他にも

• YAML的なオブジェクトの書き方
• if/unlessの後置記法
• JavaScriptの埋め込み
• ヒアドキュメント
• 可変引数
• デフォルト引数 などなど
翻訳をしてみて

• コードのおかげでなんとなく翻訳できる
• 7600文字の翻訳で10時間くらい
• ジョークっぽいのがあったけど上手く訳せず
• 実は既に翻訳があったりするwww
おわり

More Related Content

ODP
kpfx07 LT ruby-processingでイケメンになりたい
PDF
WordPressで始めるphp入門
PDF
入門 超絶技巧プログラミング !
PDF
Collectionを使いこなす
PDF
goog.ui.Component のはぐれかた
PDF
traceur-compilerで未来のJavaScriptを体験
PDF
10分で分かるr言語入門ver2.9 14 0920
PDF
10分で分かるr言語入門ver2.10 14 1101
kpfx07 LT ruby-processingでイケメンになりたい
WordPressで始めるphp入門
入門 超絶技巧プログラミング !
Collectionを使いこなす
goog.ui.Component のはぐれかた
traceur-compilerで未来のJavaScriptを体験
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.10 14 1101

Similar to CoffeeScript (20)

PDF
⑯jQueryをおぼえよう!その2
PDF
Haikara
PDF
Favtile ~never write JS again~
PDF
Aaなゲームをjsで
PDF
Aaなゲームをjsで
PPTX
Ember.js Tokyo event 2014/09/22 (Japanese)
PDF
すごいHaskell読書会#1 in 大阪
PDF
フロント作業の効率化
KEY
Arctic.js
PDF
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
PDF
Pythonで始めるDropboxAPI
PDF
JavaScript/CSS 2015 Autumn
PDF
第3回 JavaScriptから始めるプログラミング2016
PDF
PHPerのためのSwift入門
PDF
プログラムの読み方
PDF
㉘HTML5+CSS3でアニメーション!
PDF
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
PDF
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
PDF
Functional JavaScript with Lo-Dash.js
KEY
第3回BDD勉強会
⑯jQueryをおぼえよう!その2
Haikara
Favtile ~never write JS again~
Aaなゲームをjsで
Aaなゲームをjsで
Ember.js Tokyo event 2014/09/22 (Japanese)
すごいHaskell読書会#1 in 大阪
フロント作業の効率化
Arctic.js
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
Pythonで始めるDropboxAPI
JavaScript/CSS 2015 Autumn
第3回 JavaScriptから始めるプログラミング2016
PHPerのためのSwift入門
プログラムの読み方
㉘HTML5+CSS3でアニメーション!
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Functional JavaScript with Lo-Dash.js
第3回BDD勉強会
Ad

More from Ryo Maruyama (15)

PDF
jQuery勉強会#4
PDF
jQuery勉強会#3
PDF
Prototypeベース in JavaScript
PDF
jQuery勉強会#2
PDF
Webサーバの性能測定
PDF
Sphinx/reST
PDF
JSDoc ToolKit
PDF
JavaScript入門
PDF
画像を使わずにデザイン
PDF
AWS Vol.1
PDF
HTML Launcher
PDF
PDF
勝手に改造 Chrome to Phone
KEY
レインボーテーブルを使ったハッシュの復号とSalt
ODP
プログラミング言語Ruby 1章 イントロダクション
jQuery勉強会#4
jQuery勉強会#3
Prototypeベース in JavaScript
jQuery勉強会#2
Webサーバの性能測定
Sphinx/reST
JSDoc ToolKit
JavaScript入門
画像を使わずにデザイン
AWS Vol.1
HTML Launcher
勝手に改造 Chrome to Phone
レインボーテーブルを使ったハッシュの復号とSalt
プログラミング言語Ruby 1章 イントロダクション
Ad

CoffeeScript