스칼라 문
Java 언어를 잘 이해하고 있다면 Scala를 배우기가 쉬울 것입니다. Scala와 Java의 가장 큰 구문 차이점은 줄 종결자가 선택 사항이라는 것입니다. 서로의 메소드를 호출하여 통신하는 객체 컬렉션으로 정의할 수 있는 Scala 프로그램을 생각해 보세요. 이제 클래스, 객체, 메소드 및 임시 변수가 무엇인지 간략하게 살펴보겠습니다.
객체 - 객체에는 상태와 동작이 있습니다. 예를 들어, 개는 색깔, 이름, 품종 등의 상태를 갖고 있고, 흔들고, 짖고, 먹는 등의 행동을 가지고 있습니다. 객체는 클래스의 인스턴스입니다.
클래스 - 클래스는 동작을 설명하고 지원되는 개체의 유형을 표시하기 위해 템플릿/청사진으로 정의할 수 있습니다.
방법 - 방법은 본질적으로 작업입니다. 클래스에는 여러 메서드가 포함될 수 있습니다. 로직이 작성되고, 데이터가 조작되고, 모든 작업이 수행되는 방식입니다.
필드(Fields) - 모든 개체에는 필드라고 불리는 고유한 임시 변수 세트가 있습니다. 객체의 상태는 이러한 필드에 할당된 값에 의해 생성됩니다.
첫 번째 Scala 프로그램:
대화형 모드 프로그래밍:
스크립트 파일을 매개변수로 전달하지 않고 인터프리터를 호출하면 다음 프롬프트가 표시됩니다:
C:>scalaWelcome to Scala version 2.9.0.1Type in expressions to have them evaluated.Type :help for more information.scala>
Scala 프롬프트에 다음 텍스트를 입력하고 Enter를 누르세요.
scala> println("Hello, Scala!");
그러면 다음과 같은 결과가 생성됩니다:
Hello, Scala!
스크립트 모드 프로그래밍:
간단한 문장을 인쇄하는 간단한 코드를 살펴보겠습니다: Hello, World!
object HelloWorld { /* This is my first java program. * This will print 'Hello World' as the output */ def main(args: Array[String]) { println("Hello, world!") // prints Hello World }}
파일을 저장하고, 프로그램을 컴파일하고 실행하는 방법을 살펴보겠습니다. 아래 단계를 따르십시오.
메모장을 열고 위의 코드를 추가하세요.
파일을 HelloWorld.scala로 저장합니다.
명령 프롬프트 창을 열고 프로그램 파일을 저장한 디렉터리로 변경합니다. C:>
"scalac HelloWorld.scala"를 입력하고 Enter를 눌러 코드를 컴파일합니다. 코드에 오류가 없으면 명령 프롬프트가 자동으로 다음 줄로 넘어갑니다.
위 명령은 현재 디렉터리에 여러 클래스 파일을 생성합니다. 이름 중 하나는 HelloWorld.class입니다. JVM(Java Virtual Machine)에서 실행될 수 있는 바이트코드입니다.
이제 "scala HelloWorld"를 입력하여 프로그램을 실행하세요.
창에 "Hello, World!"가 인쇄되어 있는 것을 볼 수 있습니다.
기초문법
Scala 프로그램에 관해서는 다음 사항에 주의하는 것이 매우 중요합니다.
대소문자 구분 - Scala는 대소문자를 구분합니다. 즉, Hello와 hello 식별자는 Scala에서 서로 다른 의미를 가집니다.
클래스 이름 - 모든 클래스 이름의 첫 글자를 대문자로 표기합니다.
클래스 이름을 구성하기 위해 여러 단어를 사용해야 하는 경우 각 단어의 첫 글자를 대문자로 표시합니다.
예: class MyFirstScalaClass메소드 이름 - 모든 메소드 이름의 첫 글자는 소문자입니다.
메소드 이름을 구성하기 위해 여러 단어가 사용되는 경우 각 단어의 첫 글자를 대문자로 사용해야 합니다.
예: def myMethodName()프로그램 파일 이름 - 프로그램 파일 이름은 개체 이름과 정확히 일치해야 합니다.
파일을 저장할 때 객체 이름을 사용하여 저장해야 하며(Scala는 대소문자를 구분함) 파일 확장자로 ".scala"를 추가해야 합니다. (파일 이름과 개체 이름이 일치하지 않으면 프로그램이 컴파일되지 않습니다.)
예: "HelloWorld"가 개체의 이름이라고 가정합니다. 그런 다음 파일은 'HelloWorld.scala"로 저장되어야 합니다.def main(args: Array[String]) - Scala 프로그램은 main( ) 메소드, 이는 모든 Scala 프로그램의 필수 프로그램 진입 부분입니다. 스칼라 수정자:
모든 Scala 구성요소에는 이름이 필요합니다. 객체, 클래스, 변수 및 메소드 이름을 사용하는 것을 식별자라고 합니다. 식별자는 키워드를 사용할 수 없으며 식별자는 대소문자를 구분합니다. Scala는 다음 네 가지 유형 식별자를 지원합니다.
리터럴 식별자
영숫자 식별자는 문자 또는 밑줄로 시작하며 문자, 숫자 또는 밑줄을 사용할 수 있습니다. "$" 문자는 Scala의 예약어이므로 식별자에 사용할 수 없습니다. 다음은 유효한 알파벳 식별자입니다:
C:> scalac HelloWorld.scala C:> scala HelloWorldHello, World!
다음은 불법적인 식별자입니다:
으으으으으운영자 식별자
운영자 식별자는 하나 이상의 운영자 문자로 구성됩니다. 작업 문자는 +, :, ?, ~ 또는 #과 같은 인쇄 가능한 ASCII 문자입니다. 다음은 합법적인 운영자 식별자입니다:
age, salary, _value, __1_value
Scala 컴파일러는 연산자 식별자를 내부적으로 "롤링"하여 $ 문자를 포함하는 유효한 Java 식별자가 되도록 합니다. 예를 들어 식별자:->는 내부적으로 $colon$minus$greater로 표시됩니다.
혼합 식별자
혼합 식별자는 영숫자 식별자와 밑줄 및 연산자로 식별됩니다. 다음은 합법적인 혼합 식별자입니다:
$salary, 123abc, -salary
여기서 unary_+는 단항 + 연산자를 정의하기 위한 메소드 이름으로 사용되며, myvar_=는 할당 연산자를 정의하기 위한 메소드 이름으로 사용됩니다.
직접 식별자
리터럴 식별자는 백틱(` . . .`)으로 묶인 문자열입니다. 다음은 법적 텍스트 태그입니다:
+ ++ ::: <?> :>
스칼라 키워드:
다음 목록은 Scala의 예약어를 보여줍니다. 이러한 예약된 키워드는 상수, 변수 또는 기타 식별자 이름으로 사용할 수 없습니다.
초록 | 케이스 | 잡아 | 수업 |
데프 | 해라 | 그 외 | 연장 |
거짓 | 최종 | 드디어 | |
forSome | 만일 | 암시적 | 가져오기 |
게으르다 | 경기 | 새로운 | null |
객체 | 무시 | 패키지 | 비공개 |
보호됨 | 복귀 | 밀봉 | 슈퍼 |
이거 | 던지기 | 특성 | 시도해 보세요 |
맞다 | 유형 | 발 | 변수 |
하면서 | 와 함께 수확량 | ||
- | : | = | => |
<- | <: | <% | >: |
# | @ |
스칼라의 댓글
Scala는 Java와 마찬가지로 한 줄 주석과 여러 줄 주석을 지원합니다. 여러 줄 주석은 중첩될 수 있지만 올바르게 중첩되어야 합니다. Scala 컴파일러는 사용 가능한 모든 주석과 모든 문자를 무시합니다.
아아아아빈 줄과 공백:
주석과 함께 공백만 포함된 줄을 빈 줄이라고 하며 Scala는 이를 완전히 무시합니다. 태그는 공백 및/또는 설명으로 구분할 수 있습니다.
줄 바꿈:
Scala는 줄 지향 언어이며 명령문은 세미콜론(;) 또는 개행 문자로 끝날 수 있습니다. 명령문 끝의 세미콜론은 일반적으로 선택 사항입니다. 한 줄에 단독으로 나타나는 경우 원하는 문을 입력할 수 있습니다. 반면, 한 줄에 여러 문장을 작성하는 경우에는 세미콜론이 필요합니다:
unary_+, myvar_=
스칼라 패키지:
패키지는 코드명 모듈입니다. 예를 들어 Lift 유틸리티 패키지 net.liftweb.util이 있습니다. 패키지 선언은 아래와 같이 소스 파일에서 주석이 아닌 첫 번째 줄입니다.
`x` `<clinit>` `yield`
Scala 패키지를 가져와서 현재 컴파일 범위 내에서 참조할 수 있습니다. 다음 명령문은 가져온 scala.xml 패키지의 내용입니다.
object HelloWorld { /* This is my first java program. * This will print 'Hello World' as the output * This is an example of multi-line comments. */ def main(args: Array[String]) { // Prints Hello World // This is also an example of single line comment. println("Hello, world!") }}
캡슐화된 클래스 및 객체를 가져올 수 있습니다. 예를 들어 scala.collection.mutable에서 HashMap을 가져올 수 있습니다.
단일 캡슐화된 scala.collection.immutable 패키지에서 여러 클래스 또는 객체를 가져올 수 있습니다(예: TreeMap 및 TreeSet):
val s = "hello"; println(s)