Rubyistを誘うScalaの世界

250
-1

Published on

#kwskrb 30

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
250
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rubyistを誘うScalaの世界

  1. 1. Rubyistを誘う Scalaの世界 @Peranikov
  2. 2. ドーモ、 ルビースト=サン
  3. 3. Scalaistデス
  4. 4. 今日はRubyistの皆様に Scalaの魅力を 伝えるために来ました
  5. 5. どうやってつたえるか • Rubyの魅力(と思われるもの)をScalaで再現す れば良い • 型をなるべく書かない(Rubyistに型を見せると 死ぬ)
  6. 6. Scalaは純粋な オブジェクト指向 である
  7. 7. 1 + 2 これをな
  8. 8. 1.+(2) +メソッド +メソッドの引数 こうじゃ
  9. 9. 1.+(2) +メソッド +メソッドの引数 RubyでもScalaでも通る!
  10. 10. リスト操作
  11. 11. どっちのコードか? [1,2,3].map { ¦i¦ i * 2 }
  12. 12. 正解:Ruby [1,2,3].map { ¦i¦ i * 2 }
 # => [2, 4, 6]
  13. 13. Scalaではこう書く List(1,2,3).map { i => i * 2 }
 // => List(2, 4, 6)
  14. 14. さらに短く List(1,2,3).map { _ * 2 }
 // => List(2, 4, 6) ※ _ には引数が代入される
  15. 15. おなじみのメソッド達 • min • max • reduce • zip • unzip
  16. 16. Mix-In
  17. 17. RubyにはModule、 ScalaにはTraitがある trait HelloModule { def hello = "Hello!" } trait WorldModule { def world = "World!" } class Hoge extends HelloModule with WorldModule val hoge = new Hoge() hoge.hello // => "Hello!" Traitを定義 TraitをMix-In
  18. 18. Open Class
  19. 19. 暗黙クラスを使う implicit class MyString(val s: String) extends AnyVal { def addScala = s + "Scala" } "Ruby is like ".addScala // => "Ruby is like Scala" 拡張したい型を指定 implicitにより暗黙的に型変換され、MyStringの メソッドが呼ばれる
  20. 20. Duck Typing
  21. 21. がんばればできる
 (structural subtyping) type Hogeable = { def hoge(s: String):String }
 
 def addFuga(t: Hogeable): String = { t.hoge + fuga! } class Hoge { def hoge = hoge! } addFuga(new Hoge()) // => hoge!fuga! 共通するメソッドを持つ 型を定義 定義した型を 引数に指定 メソッドを持っていれば そのまま渡せる
  22. 22. 結論 • Rubyの魅力(と思われるもの)は大体Scalaで再 現できた(はず) • Scala書こうぜ!
  23. 23. 終わり
  24. 24. メタプログラミングは? • そんなものにふれてはいけない
  25. 25. メタプログラミングは??? • 一応ScalaにもReflectionやMacroが存在する • まだEXPERIMENTAL • 触ってみたが面倒くさかった
 (Rubyほどカジュアルに使えない)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×