[scala-korea][블로그 글] 스칼라 implicit를 사용해 장난치기 - implicit를 써서 설정이 안된 경우 컴파일시 타입오류 나게 만들기

73 views
Skip to first unread message

Hyunsok Oh

unread,
May 15, 2013, 11:18:06 AM5/15/13
to scala...@googlegroups.com
안녕하세요? 스칼라 스쿨 번역하다 보니 피네이글이라는 트위터에서 만든 라이브러리 관련 글이 있어 심심풀이로 소스코드를 들여다 보다가 재미있는 주제가 있어 블로그에 정리를 했습니다.

아래는 이 주제에 대한 인트로...

프로그램을 짜다 보면 각종 설정을 조합해 어떤 객체를 만들고, 이를 사용해 작업을 수행해야 하는 경우가 있다. 이때, 꼭 설정해야만 하는 부분과 그렇지 않은 부분이 있거나, 조합에 따라 허용되거나 허용되지 않는 경우가 있을 수도 있다.  예를 들어 원격에서 데이터를 받아 플레이하는 비디오 플레이어를 만든다고 하자. 이때 HTTP로 연결해 파일을 가지고와서 AVC 코덱으로 플레이할 수도 있고, RTSP로 연결해 스트리밍으로 플레이하되 H.264 코덱을 사용할 수도 있을 것이다. 어느경우든 데이터 전송 방식과 코덱은 반드시 설정해야 하지만, 코덱 뒤의 영상 필터는 설정하지 않아도 된다.

라이브러리를 제공하는 경우에도 이런 경우가 많이 있다. 필수 설정 요소는 물론 메뉴얼에 적어두거나 스칼라독 등 소스에 있는 문서 부분에 정보를 추가해 두지만, 시간이 지나면 잊혀지기 마련이다.

런타임에 체크해야만 하는 경우도 있겠지만, 정적으로 구조를 결정해야 하는 상황이라면 컴파일시 필수적인 설정이 되어 있지 않은 객체는 컴파일 자체가 안된다면 더 좋을 것이다. 스칼라의 implicit와 일반적 타입(generic type)을 사용해 이런 처리가 가능하다. 또한, @impilcitNotFound 애노테이션을 사용해 오류 메시지에 설정 상태를 표시할 수도 있다. 물론 타입시스템을 사용하기 때문에 아주 자세한(개별 설정 값 수준의) 정보는 보여주기 힘들지만, 설정이 되었는지 여부 정도는 표시할 수 있다.

URL은 http://enshahar.com/2013/05/16/%EC%8A%A4%EC%B9%BC%EB%9D%BC%ED%83%80%EC%9E%85%EC%B2%B4%ED%81%AC%EB%A1%9C%EC%84%A4%EC%A0%95%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%B2%B4%ED%81%AC/ 입니다. 

그냥 이런짓도 하는구나 하고 한번 보시면 될듯.

Outsider (JeongHoon Byun)

unread,
May 16, 2013, 1:12:50 AM5/16/13
to 라코딩단스칼라
블로그가 있으셨군요.. 좋은 글 감사합니다.


2013/5/16 Hyunsok Oh <ensh...@gmail.com>

--
Google 그룹스 '라 스칼라 코딩단' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 scala-korea...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 scala...@googlegroups.com(으)로 이메일을 보내세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.
 
 



--
/************************************************
Outsider (JeongHoon Byun)
Programmer & Hacker

Twitter : @Outsideris
*************************************************/

윤정부

unread,
May 16, 2013, 1:39:14 AM5/16/13
to scala...@googlegroups.com
좋은 글 감사합니다.


2013년 5월 16일 오후 2:12, Outsider (JeongHoon Byun) <outsi...@gmail.com>님의 말:
Reply all
Reply to author
Forward
0 new messages