1 minute read


04.25 3주차 수업 내용 정리

튜플 Tuple 組

  • 구조적 데이터 構造データ: 내부에 데이터를 포함하는 데이터
  • 튜플 Tuple 組
    • 복수 데이터를 컴마로 묶은 구조적 데이터
    • 서로 다른 자료형끼리도 튜플로 묶을 수 있다. ex: ("January", 1, 31)
    • 튜플을 튜플로 묶는 것도 가능하다. ex: (("January", 1, 31))
    • 튜플 전체가 하나의 데이터이므로, 이름을 붙이거나 함수에 파라미터로써 전달할 수 있다.
(1, 4) ;;
(* - : int * int = (1, 4) *)
(* 위와 같이 곱하기로 자료형을 표시함 *)



match문 パターンパッチ

  • OCaml에서 구조적 데이터를 쪼개어 안에 있는 데이터를 꺼내 쓰기 위해서는, match문 パターンパッチ를 이용한다. 형식은 아래와 같으며, 식 1을 실행한 뒤 그 결과를 패턴과 조합해 식 2를 실행하는 방식이다. match 식 1 with 패턴 -> 식 2
match (3.0, 4.0) with
	(a, b) -> sqrt(a *. a +. b *. b) 
(* - : float = 5 *)

let kyori pair =  match pair with
	(a, b) -> sqrt(a *. a +. b *. b)

kyori (3.0, 4.0)
(* - : float = 5 *)
  • 디자인 레시피를 작성할 때도 잊지 말고 ‘템플릿’을 추가하도록 하자. 이때 템플릿이란 구조적 데이터를 쪼개어 match문을 작성하는 것을 말한다.



레코드 レコード

  • {필드명 1 = 데이터 1; 필드명 2 = 데이터 2; ...}의 형식으로 작성한다. 필드명과 데이터의 값이 한 쌍이 된다.
  • 레코드에서 작성 순서는 중요하지 않다. 필드명 1을 먼저 작성하든, 필드명 2를 작성하든 결과적으로 같은 값이다.
  • 레코드 역시 튜플과 마찬가지로 전체가 하나의 값이다.
  • 레코드 선언 시, 반드시 해당 레코드의 필드명과 자료형을 함께 선언해야 한다. 이때 형 정의를 위해 type문을 사용한다.
type gakusei = {
	namae: string;
	tensuu: int;
	seiseki: string;
}


  • 한 프로그램 내에 존재하는 모든 필드명은 서로 달라야 한다.
(* 학생의 구조적 데이터를 받아 성적통지문을 작성하는 함수 tsuuchi *)
let tsuuchi gakusei = match gakusei with
	{namae = n; tensuu = t; seiseki = s} ->
		n ^ "さんの点数は" ^ string_of_int t ^ "点で、成績は" ^ s ^ "です。"
		(* int 자료형의 t를 string으로 변환해 사용함 *)