Skip to content

Instantly share code, notes, and snippets.

@Gab-km
Last active August 29, 2015 14:00
Show Gist options
  • Save Gab-km/11023107 to your computer and use it in GitHub Desktop.
Save Gab-km/11023107 to your computer and use it in GitHub Desktop.
Scala で Active Patterns っぽいことやってみた
class FizzBuzzExtractor[T](f: T => Boolean){
def unapply(t: T) = f(t)
}
val FizzBuzz = new FizzBuzzExtractor[Int](_ % 15 == 0)
object Fizz extends FizzBuzzExtractor[Int](_ % 3 == 0)
object Buzz extends FizzBuzzExtractor[Int](_ % 5 == 0)
object FizzBuzzRunner {
def run(num: Int) = num match {
case FizzBuzz() => println("FizzBuzz")
case Fizz() => println("Fizz")
case Buzz() => println("Buzz")
case num => println(num.toString())
}
}
FizzBuzzRunner.run(1) //=> 1
FizzBuzzRunner.run(3) //=> Fizz
FizzBuzzRunner.run(4) //=> 4
FizzBuzzRunner.run(5) //=> Buzz
FizzBuzzRunner.run(10) //=> Buzz
FizzBuzzRunner.run(15) //=> FizzBuzz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment