Offcanvas

개발자

“전면 개편” 스칼라 3 출시··· 유형 시스템 및 구문 개선

2021.05.17 Paul Krill  |  InfoWorld
JVM과 자바스크립트 런타임에서 실행할 수 있는 객체 지향 및 함수형 언어의 최신 버전 ‘스칼라 3(Scala 3)’가 프로덕션 릴리즈로 출시됐다. 개발팀에서 ‘전면 개편(complete overhaul)’이라고 설명하는 이번 업그레이드는 새로운 유형 시스템과 구문 개선을 특징으로 한다. 
 
ⓒGetty Images

스칼라 3는 지난 2월 17일 릴리즈 캔디데이트(RC) 버전을 선보인 데 이어 5월 14일 프로덕션 릴리즈를 공개했다. 개발팀은 스칼라 3에서 ‘if’, ‘while’, ‘for’과 같은 제어 구조를 위한 ‘quite’ 구문이 새롭게 추가됐다고 전했다. 이 밖에 스칼라 3의 구문 개선 사항은 다음과 같다. 

• 들여쓰기에 민감한 프로그래밍 스타일을 지원하는 선택적 중괄호
• 선택사항으로 제공하는 new 키워드
_에서 ?으로 변경된 유형-레벨 와일드카드
• 대폭 수정된 암시(Implicits)와 해당 구문 

스칼라 3의 새로운 언어 기능은 아래와 같다. 

using 절을 유형별로 지정할 수 있기 때문에 명시적으로 참조되지 않은 용어 변수 이름에서 함수 서명을 해제할 수 있다. 
주어진 인스턴스로 특정 유형의 표준값을 정의할 수 있다. 구현 세부 사항을 유출하지 않고 유형 클래스를 사용하는 프로그래밍을 더욱더 쉽게 수행할 수 있다.
• 이제 확장 메소드가 언어에 직접 내장돼 향상된 오류 메시지와 유형 추론을 지원한다. 
• 암시적 변환이 유형 클래스 Conversion의 인스턴스로 재설계됐다. 
• 컨텍스트 함수의 새로운 기능은 컨텍스트 추상화를 1급 객체로 만든다. 이는 라이브러리 저자가 간결한 도메인별 언어를 표현할 수 있는 도구 역할을 한다. 
• 컴파일러가 암시적 매개변수를 확인할 수 없다면 이 문제를 해결할 수 있는 가져오기 제안이 제공된다. 

스칼라 3의 유형 시스템 개선 사항은 다음과 같다. 

열거형(Enums or enumerations)이 케이스 클래스와 잘 혼합되고 대수 데이터 타입을 표현하는 새로운 표준을 형성하도록 재설계됐다. 
• 불투명 유형 별칭을 사용하면 성능 저하 없이 구현 세부 정보를 숨길 수 있다. 
• 교집합 및 공용체를 사용하면 상속 계층 외부에서 유형 제약 조건을 표현할 수 있다. 
다형성 함수 유형은 값 인수 외에도 유형 인수를 취하는 함수를 추상화할 수 있다. 
• 유형 람다는 보조 유형 정의 없이 유형 인수로 전달할 수 있는 유형 수준 함수다. 
• 스칼라 3는 암시적 해상도를 사용해 유형 수준 연산을 인코딩하는 대신 유형 일치를 지원한다. 

스칼라 3의 객체 지향 프로그래밍 기능은 아래와 같다. 

• 트레이트가 클래스에 더 가까워지고 매개변수도 사용할 수 있게 됐다. 모듈식 소프트웨어 분해를 위한 도구로 더 강력해졌다는 게 개발팀의 설명이다. 
개방형 클래스를 사용하려면 라이브러리 디자이너가 클래스를 개방형으로 표시해야 한다. 
• 동작을 구현하는 유틸리티 트레이트는 추론된 유형의 일부가 되어서는 안 된다. 스칼라 3를 사용하면 이러한 트레이트를 투명하게 표시해 사용자로부터 상속을 숨길 수 있다. 
명시적 null은 정적으로 오류를 포착하기 위해 null을 유형 계층에서 제거한다. 안전한 초기화를 위한 추가 검사는 초기화되지 않은 객체에 관한 액세스를 감지한다. 

또한 스칼라 3는 컴파일-타임 작업, 인용된 코드 블록, 컴파일 타임의 값과 메소드를 줄이는 인라인 기능을 포함한 메타프로그래밍 도구도 제공한다. 스칼라 3 다운로드 지침은 여기서 확인할 수 있다. 
ciokr@idg.co.kr
 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.