스칼라 소개

소프트웨어 개발은 ​​새로운 기술, 되살아난 트렌드 또는 마침내 주류를 장악한 오래된 아이디어와 같이 급격한 변화로 정의되는 산업입니다. Scala는 곧 후자의 예가 될 것입니다. Typescript 숙련도에 대한 증가하는 요구에서 GraphQL을 사용한 더 스마트한 API 처리에 이르기까지 더 강력한 유형의 기술이 역사적으로 덜 독단적인 공간으로 나아가고 있는 것으로 보입니다. 현재 타이프스크립트를 배우고 있는 자바스크립트 개발자로서 다른 타이핑 기술에 관심을 갖고 스칼라(Scala)라는 언어를 접하게 되었습니다. 따라서 이 블로그에서는 독자에게 Scala의 기본 사항을 간략하게 설명하고 가까운 장래에 주류 개발이 어떤 모습일지에 대한 통찰력을 제공할 것입니다.

먼저 Scala가 변수를 다루는 방법을 살펴보는 것으로 시작합니다. 스칼라는 모든 값이 객체라는 점에서 객체 지향 언어입니다. 즉, 모든 값에 유형이 있을 수 있습니다. 이러한 유형은 최상위 수준에 "Any"상위 유형이 있는 계층 구조에 속합니다. Any는 toString 또는 equals와 같이 모든 값에 적용할 수 있는 몇 가지 보편적인 메서드를 정의하는 데 사용됩니다. 아래 다이어그램은 계층 구조의 모양을 설명합니다.



위에서 Any 슈퍼클래스에는 AnyVal과 AnyRef라는 두 개의 즉각적인 서브클래스가 있음을 알 수 있습니다. 자바스크립트의 관점에서 AnyVal 클래스는 단순한 데이터 유형으로, AnyRef는 복잡한 데이터 유형으로 생각할 수 있습니다. AnyVal 유형은 null을 허용하지 않으며 Scala의 모든 함수에는 일종의 반환 값이 필요하기 때문에 Unit 유형은 본질적으로 함수에서 반환될 수 있는 자리 표시자입니다. 값이 아닌 모든 유형은 AnyRef 유형과 사용자 정의 유형입니다. 계층 구조의 맨 아래에는 "Nothing"유형과 Null이 있습니다. Nothing은 모든 유형의 하위 유형이며 값이 없습니다. 일반적으로 표현식이 값을 생성하지 않거나 메서드가 정상적으로 반환되지 않는다는 신호를 보내는 데 사용됩니다. Null은 모든 참조 유형의 하위 유형이며 "null"키워드의 리터럴 값을 갖습니다. Null은 Java에 Nothing 하위 유형이 없으므로 사용해서는 안 되므로 Java 코드로 작업하는 방법으로 Scala에서 사용할 수 있습니다.

Scala에서 객체 생성은 객체 생성을 위한 청사진 역할을 하는 클래스를 정의하여 수행됩니다. 클래스 이름은 대문자로 표시되며 "new"키워드로 인스턴스화됩니다. 클래스에는 값, 개체, 특성, 변수, 메서드 및 기타 클래스가 포함될 수 있습니다. 클래스에 정의된 이러한 각 속성을 클래스의 "멤버"라고 합니다. 아래 코드를 고려하십시오.

class Person(var name: String, var age: Int) {

  def talk(words : String){ //Return type is a string
    println(words)
}
# use the class
val zack = new Person("Zack", 35)
zack.name                        // "Zack"
zack.age                         // 35
zack.talk("Hello there!")        // "Hello there!"            


여기서 우리는 세 개의 멤버가 있는 Person이라는 클래스를 정의했습니다. name, age 및 talk라는 메서드입니다. 변수는 "var"키워드로 선언되며 변경 가능합니다. "val"키워드로 선언했다면 자바스크립트의 const 키워드와 마찬가지로 값을 변경할 수 없습니다. talk 메서드는 "def"키워드로 선언하고 내장된 "println"메서드로 텍스트 줄을 단순히 출력하는 함수입니다. 클래스의 각 멤버에는 선언될 때 정의된 값이 있고 메서드에는 미리 비슷하게 정의된 반환 값이 있습니다.

요컨대, Java는 강력한 유형의 언어이며 Scala도 유형이 지정되지만 더 유연하고 독단적이고 의견이 없는 프로그래밍 언어 스펙트럼의 중간으로 향하는 산업 전반의 전환을 암시합니다. 이러한 변화는 표현력이 뛰어나고 버그가 발생하지 않는 코드에 대한 열망에서 비롯되었습니다. 하나가 다른 하나를 위해 희생할 필요가 없으며, 특정 환경에서 어떤 언어가 가장 잘 작동하는지에 대한 대화가 더 미묘해질 미래가 다가오고 있습니다. 왜 우리는 그것을 다른 방식으로 원할까요?

좋은 웹페이지 즐겨찾기