English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이전에 자바 프로그래머로 일했고 자바 언어의 기본 지식을 가지고 있다면 스칼라의 기본 문법을 빠르게 배울 수 있습니다。
스칼라와 자바의 가장 큰 차이는 스타일링의 마지막에 세미콜론(
스칼라 프로그램은 객체의 집합으로, 메시지 전달을 위해 상호 호출하여 메서드를 수행할 수 있습니다. 다음으로, 클래스, 객체, 메서드, 예제 변수의 개념을 이해해 보겠습니다:
객체 - 객체는 속성과 행동을 가지고 있습니다. 예를 들어, 강의의 특성 필드는 색상, 이름, 행동은 짖고, 달리기, 먹기 등입니다. 객체는 클래스의 예제입니다.
클래스 - 클래스는 객체의 추상적이며, 객체는 클래스의 구체적인 예제입니다.
메서드 - 메서드 설명의 기본적인 행동이며, 클래스는 여러 메서드를 포함할 수 있습니다.
필드 - 모든 객체는 독특한 예제 변수 집합을 가지고 있으며 이는 필드입니다. 객체의 속성은 필드에 값을 할당하여 생성됩니다.
데이터베이스 프로그래밍은 스크립트 파일을 생성하지 않고 다음 명령어로 호출할 수 있습니다:
$ scala Scala 버전에 오신 것을 환영합니다 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31. 输入表达式以计算它们 更多帮助信息请输入: help scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! scala>
HelloWorld.scala 파일을 생성하여 코드를 실행할 수도 있습니다. HelloWorld.scala 코드는 다음과 같습니다:
object HelloWorld { /* 이것은 제가 작성한 첫 번째 Scala 프로그램입니다 * 다음 프로그램은 'Hello World!'을 출력합니다. */ def main(args: Array[String]) { println("Hello, world!") // Hello World 출력 } }
다음은 scalac 명령어로 컴파일하는 방법입니다:
$ scalac HelloWorld.scala $ ls HelloWorld$.class HelloWorld.scala HelloWorld.class
컴파일된 후, 디렉토리에 HelloWorld.class 파일이 생성되었음을 확인할 수 있습니다. 이 파일은 Java Virtual Machine (JVM)에서 실행할 수 있습니다.
컴파일된 후, 다음 명령어로 프로그램을 실행할 수 있습니다:
$ 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는 문자 숫자와 기호 두 가지 형태의 식별자를 사용할 수 있습니다.
문자 숫자 식별자는 문자나 underscores로 시작하며, 그 뒤에는 문자나 숫자를 추가할 수 있습니다. Scala에서 "$" 기호는 문자로 간주됩니다. 그러나 "$"로 시작하는 식별자는 Scala 컴파일러가 생성하는 보존된 식별자로 사용되며, 응용 프로그램은 충돌을 피하기 위해 "$"로 시작하는 식별자를 사용하지 않는 것이 좋습니다.
Scala의 이름 규칙은 Java와 유사한 camel 이름 규칙을 사용합니다. 첫 번째 문자는 소문자로, 예를 들어 toString. 클래스 이름의 첫 번째 문자는 대문자로 사용되며, 또한 충돌을 피하기 위해 마지막 문자로 underscores를 사용하지 않는 것이 좋습니다. 기호 식별자는 하나 이상의 기호를 포함합니다. 예를 들어:+،:،? 등, 예를 들어:
+ ++ :::: < ?? ?:->
Scala의 내부 구현에서는 음의 식별자를 사용합니다. 예를 들어:-> $colon$minus$greater를 사용하여 이 기호를 표현합니다. 따라서 Java 코드에서 접근하려면:-> 메서드를 사용할 때, Scala의 내부 이름 $colon$minus$greater를 사용해야 합니다.
혼합 식별자는 문자 숫자 식별자 뒤에 하나 이상의 기호가 따르는 경우가 있습니다. 예를 들어 unary_+ Scala에 대한+메서드의 내부 구현에서 사용되는 이름입니다. 문자열 식별자는 ""로 정의된 문자열입니다. 예를 들어 `x` `yield`.
"" 사이에서 어떤 유효한 Scala 식별자를 사용할 수 있습니다. Scala는 그것들을 식별자로 해석합니다. 일반적인 사용 사례로는 Thread의 yield 메서드가 있습니다. Scala에서 Thread.yield()를 사용할 수 없는 이유는 yield가 Scala의 키워드이기 때문입니다. 이 메서드를 사용하려면 Thread.`yield`()를 사용해야 합니다.
아래 표는 scala 보존 키워드를 나열하며, 다음 키워드를 변수로 사용할 수 없습니다:
abstract | case | catch | class |
def | do | else | extends |
false | final | finally | for |
forSome | if | implicit | import |
lazy | match | new | null |
object | override | package | private |
protected | return | sealed | super |
this | throw | trait | try |
true | type | val | var |
while | with | yield | |
- | : | = | => |
<- | <: | <% | >: |
# | @ |
Scala는 Java와 같이 단一行 주석과 다중 줄 주석을 지원합니다. 다중 줄 주석은 중첩될 수 있지만, 올바르게 중첩되어야 하며, 하나의 주석 시작 문자는 하나의 주석 종료 문자와 일치해야 합니다. 주석은 Scala 컴파일에서 무시됩니다. 예제 다음과 같습니다:
object HelloWorld { /* 이것은 Scala 프로그램입니다 * 이것은 한 줄 주석입니다 * 여기서는 다중 줄 주석을 보여줍니다 */ def main(args: Array[String]) { // Hello World 출력 // 이것은 단一行 주석입니다 println("Hello, world!") } }
한 줄에 공백만 있거나 주석이 있을 경우, Scala는 그것을 공백 줄로 간주하고 무시합니다. 주석은 공백이나 주석으로 분리될 수 있습니다.
Scala는 행을 기반으로 한 언어로, 문장은 세미콜론 (;)로 끝나거나 개행 문자로 끝날 수 있습니다. Scala 프로그램에서, 문장의 끝에 세미콜론은 선택적입니다. 원하시면 입력할 수 있지만, 한 줄에 단 하나의 문장만 있을 경우 또한, 한 줄에 여러 개의 문장을 적을 경우 세미콜론은 필요합니다. 예를 들어
val s = "기초教程网"; println(s)
Scala는 package 키워드를 사용하여 패키지를 정의합니다. Scala에서 코드를 특정 패키지에 정의하는 방법은 두 가지가 있습니다:
첫 번째 방법은 Java와 같이 파일의 머리에 패키지 이름을 정의하는 방법으로, 이 방법으로는 이후 모든 코드가 해당 패키지에 배치됩니다. 예를 들어:
package com.w3codebox class HelloWorld
두 번째 방법은 C#과 유사합니다:
package com.w3codebox { class HelloWorld }
두 번째 방법은 파일에서 여러 패키지를 정의할 수 있습니다.
Scala는 import 키워드를 사용하여 패키지를 참조합니다.
import java.awt.Color // Color 도입 import java.awt._ // 패키지의 모든 멤버를 도입합니다 def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent ... // java.awt가 도입되었기 때문에 앞 부분을 제외할 수 있습니다 }
import 문은 어디서든 사용할 수 있으며, 파일 상단에만 사용할 수 있는 것이 아닙니다. import의 효과는 문장 블록의 끝까지 이어집니다. 이는 이름 충돌 가능성을 크게 줄일 수 있습니다.
패키지의 몇 가지 멤버를 도입하려면 selector(선택자)를 사용할 수 있습니다:
import java.awt.{Color, Font} // 멤버 이름 변경 import java.util.{HashMap => JavaHashMap} // 숨겨진 멤버 import java.util.{HashMap => _, _} // util 패키지의 모든 멤버가 도입되었지만 HashMap이 숨겨졌습니다
주의:기본적으로 Scala는 항상 java.lang._, scala._, Predef._를 가져오며, 이는 scala로 시작하는 패키지가 사용될 때 scala.를 제외할 수 있는 이유를 설명할 수 있습니다.