본문 바로가기

Development/Programming

[Scala] Implicit Parameters


implicit 키워드를 사용하게 되면 prefix 없이 접근이 가능하고 그리고 넘겨 받을 수 있는 인수 또한 implicit라고 선언한 인수만 받을 수 있다.


  1. abstract class SemiGroup[A] {
  2. def add(x: A, y: A): A
  3. }
  4. abstract class Monoid[A] extends SemiGroup[A] {
  5. def unit: A
  6. }
  7. object ImplicitTest extends App {
  8. implicit object StringMonoid extends Monoid[String] {
  9. def add(x: String, y: String): String = x concat y
  10. def unit: String = ""
  11. }
  12. implicit object IntMonoid extends Monoid[Int] {
  13. def add(x: Int, y: Int): Int = x + y
  14. def unit: Int = 0
  15. }
  16. def sum[A](xs: List[A])(implicit m: Monoid[A]): A =
  17. if (xs.isEmpty) m.unit
  18. else m.add(xs.head, sum(xs.tail))
  19. println(sum(List(1, 2, 3)))
  20. println(sum(List("a", "b", "c")))
  21. }


실행 결과


  1. 6
  2. abc