Upload
yuto-matsukubo
View
1.178
Download
0
Embed Size (px)
Citation preview
• (Matsukubo Yuto)
• @Peranikov
• Kawasaki.rb
http://kawasakirb.github.io/
• Ruby
• )Socket Ruby Scala
• We’re hiring!
Scalaclass MyClass { // ()
def smile: String = { " :-)" } //
def smile(str: String): String = { str + " :-)" }
// {}
def smile2(str: String) = str + " :-)"}
Ruby
• Enumerable#map(collect)
• Enumerable#flat_map
• Enumerable#reduce(inject)
• Enumerable#select
• Enumerable#find
• etc…
Scala
• Traversable#map
• Traversable#flatMap
• Traversable#reduceLeft
• Traversable#filter
• Traversable#find
• etc…
Ruby lambda# Rubyf = lambda { |i| i + 10 }f.call(20) # => 30
// Scalaval f = (i: Int) => i + 10f(20) // => 30
:size or length?• List
• size length (size length )
•
Ruby
List(1,2,3).length // => 3List(1,2,3).size // => 3
Ruby module Mix-inmodule Monster def roar ' '
endend
class Godzilla include Monsterend
Godzilla.new.roar # => " "
Scala Traittrait Monster { def roar = " "
}
class Godzilla extends Monster
(new Godzilla).roar // => " "
trait Monster { def roar = " "
}
trait HasTail { def swing = " "
}
class Godzilla extends Monster with HasTail
trait Monster { def roar: String}
class Godzilla extends Monster { def roar = " "
}
(new Godzilla).roar // => " "
Ruby Open Class
class String def replace_to_scala self.gsub('ruby', 'scala') endend
"ruby is nice!".replace_to_scala# => "scala is nice!"
Scala Open Class( )
implicit class MyString(val s: String) def replaceToScala = { s.replaceAll("ruby", "scala") }}
"ruby is nice!".replaceToScala// String = scala is nice!
implicit class MyString(val s: String) def replaceToScala = { s.replaceAll("ruby", "scala") }}
"ruby is nice!".replaceToScala// String = scala is nice!
implicit conversion
•
•
def concat(i: String, j: String): String = { i + j}
implicit def intToString(src: Int): String = { src.toString}
concat(100, 200) // => 100200
Ruby method_missingclass MyClass def method_missing(name) "#{name} is missing!!" endend
MyClass.new.foo# => "foo is missing!!"
Scala method_missing (Dynamic )
import scala.language.dynamics
class MyClass extends Dynamic { def selectDynamic(name: String): String = { s"${name} is missing!" }}
(new MyClass).foo // => foo is missing!
3.
def doRoar(target: Roarabel) = { target.roar}
doRoar(new KingGhidorah)// => “ ”
doRoar(new Mothra)// => “ ”