본문 바로가기

프로그래밍/Scala

Structure Type

 

슬라이드에 있는 이 예시 코드가 조금 헷갈린다. 함수 g는 Foo 에 대해서 받겠다고 했는데 왜 g(foo)를 하는지???

 

 

/*
결론 : Foo type의 정의 요소만 갖추면 (그 이상 요소를 갖더라도)
Foo type의 연산 등을 모두 이용할 수 있다.

Q. 그럼 여기서 누가 subtype인가?
foo와 sun은 Foo의 subtype이다
Foo의 자식 느낌... Foo에서 파생되었다고 생각하자
 */

 

 

 

 

 

/**
 * Structure type (Record Type)
 */
val gn = 0
object foo {
  val a = 3;def b = a+1
  def f(x:Int) = b+x+gn;def f(x:String) = "hello" + x
}
object sun{
  val a = 5;
  val b = 10
  def f(x:Int):Int = 10
  val c = 15
}

type Foo = {
val a:Int
def b:Int
def f(x:Int):Int
}

def g(x:Foo) ={
  val gn = 10
  x.f(3)
}

g(foo)
g(sun)
foo.f(3)

/*
결론 : Foo type의 정의 요소만 갖추면 (그 이상 요소를 갖더라도)
Foo type의 연산 등을 모두 이용할 수 있다.

Q. 그럼 여기서 누가 subtype인가?
foo와 sun은 Foo의 subtype이다
Foo의 자식 느낌... Foo에서 파생되었다고 생각하자
 */

 

 

 

'프로그래밍 > Scala' 카테고리의 다른 글

1103 Mixin, Stacking with Traits  (0) 2022.11.03
1101 Inheritance vs. Composition  (0) 2022.11.01
Currying & Closure 완전 이해하기  (0) 2022.10.21
PART 1 - Currying (0926)  (0) 2022.10.20
HW 1. Exercise 1-2 보충  (1) 2022.10.02