Latest web development tutorials

스칼라 기본 문법

이전에 자바 프로그래머, 자바 언어의 기초를 배우고, 그렇다면 당신은 신속하게 기본 문법 스칼라를 배울 수 있습니다.

문장의 끝에 스칼라 세미콜론, 선택 사항입니다 : 스칼라와 자바의 가장 큰 차이입니다.

우리는 스칼라 프로그램 생각할 수있는 것은 메시징을 구현하기 위해 각 메서드 호출에 의해 개체의 컬렉션입니다. 다음으로, 클래스, 객체, 메소드, 인스턴스 변수의 개념을 이해하게 :

  • 객체 - 객체 속성과 행동을해야합니다.예를 들어 개 같은 속성 : 색상, 이름, 행동 : 호출 실행, 등등 먹고. 객체 클래스의 인스턴스이다.

  • 클래스 - 클래스는 추상 객체이며, 객체 클래스의 특정 인스턴스이다.

  • 방법 - 기본 법에 기재된 방법은, 클래스는 여러 방법을 포함 할 수있다.

  • 필드 - 각 객체가 인스턴스 변수, 즉 필드의 고유 한 집합이 있습니다.필드 할당을 통해 객체의 속성을 만들 수 있습니다.


첫 번째 스칼라 프로그램

대화 형 프로그래밍

대화 형 프로그래밍은 다음 명령을 호출 할 수 있습니다, 스크립트 파일을 만들 필요가 없습니다 :

$ scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
Type in expressions to have them evaluated.
Type :help for more information.

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	

컴파일 후, 우리는에 자바 가상 머신 (JVM)에서 실행할 수 HelloWorld.class 파일에서 생성 된 디렉토리를 볼 수 있습니다.

컴파일 후, 우리는 프로그램을 실행하기 위해 다음 명령을 사용할 수 있습니다 :

$ scala HelloWorld
Hello, world!
온라인 예 >>

기본 구문

스칼라 기본 구문은 다음 사항에 유의하십시오

  • 대소 문자 구분 - 스칼라 안녕하세요 안녕하세요 로고를 의미 스칼라에서 다른 의미를 가지고있는, 대소 문자를 구분합니다.

  • 클래스 이름이 - 모든 클래스 이름 첫 글자는 대문자로한다.

    만약 클래스 이름을 구성하는 단어를 사용할 필요가있는 경우, 각 단어의 첫 문자가 대문자.

    예 : 클래스 MyFirstScalaClass

  • 방법 이름 - 모든 방법 소문자 이름의 첫 글자.

    몇몇 단어는 메소드의 이름을 구성하도록 사용되는 경우, 각 단어의 첫 글자는 대문자한다.

    예 : 데프 myMethodName ()

  • 파일 이름 - 프로그램 파일의 이름은 정확하게 오브젝트의 이름과 일치한다.

    파일을 저장하면 (기억 스칼라는 대소 문자를 구분)를 사용하는 개체 이름을 저장하고, ".scala"파일 확장명을 추가해야합니다. (파일 이름 및 객체 이름이 일치하지 않으면, 프로그램은 컴파일되지 않음).

    예 :의이 '을 HelloWorld "는 개체의 이름입니다 가정 해 봅시다. 그런 다음 파일 'HelloWorld.scala "로 저장한다

  • 데프 주 (인수 : 배열 [문자열 ]) - 스칼라 main () 메소드에서 프로그램은 각 프로그램 항목 스칼라 프로그램의 필수 부분 인 처리를 시작합니다.


식별자

스칼라는 식별자, 디지털 문자 및 기호의 두 가지 형태를 사용할 수 있습니다.

영숫자 사용은 문자로 시작하거나 문자 나 숫자가 올 수 있습니다 밑줄, 스칼라의 상징 "$"도 문자로 볼 수있다. 그러나, 상기 식별자를 사용하여 식별자의 시작 "$"를 애플리케이션이 예약 된 스칼라 컴파일러는 충돌을 방지하기 위해 "$"스타트 식별자를 사용하지 않도록해야한다.

스칼라와 자바는 toString과 유사한 명명 낙타, 첫 번째 문자의 소문자를 사용하여 명명 규칙. 첫 번째 문자 클래스 이름 또는 대문자. 또한 그 충돌을 방지하기 위해 상기 식별자의 끝을 강조하기 위해서 피해야한다. 기호 식별자는 하나 이상의 심볼을 포함하는 등의 +, :, 등 기타 :

+ ++ ::: < ?> :->

그것은 이스케이프 된 식별자를 사용할 때와 같은 스칼라 내부 구현, - 기호를 표현하기 위해 더>를 사용하여 $ 대장 $ 마이너스 $. 당신은 자바 코드에 접근 할 필요가 있다면 -> 방법을, 당신은 스칼라의 내부 이름 $ 대장 $ 마이너스 $의 이상을 사용해야합니다.

식별자에서 혼합 된 숫자 식별자는 이상과 같은 내부 구현 시간에 대한 스칼라 unary_ + 이름 + 방법으로 하나 이상의 기호 하였다. 문자열 "에 대한 리터럴 식별자 yield``X` example`을 위해, 정의된다.

당신은 스칼라)은 Thread.yield을 (사용할 수 없습니다 스칼라에서 스칼라 식별자, 수율 방법의 스레드에 대한 일반적인 사용으로 해석한다 "사이에 유효한 스칼라 식별자를 사용할 수 있습니다 때문에 스칼라의 수율 키워드, 당신은이 방법을 사용하는 Thread.`yield` ()를 사용해야합니다.


스칼라 키워드

다음 표는 우리가 변수로 다음 키워드를 사용할 수 없습니다 스칼라 예약 키워드를 나열합니다 :

추상 경우 잡기 클래스
데프 그렇지 않으면 확장
그릇된 최후의 최종적으로
forSome 절대적인 수입
게으른 시합 새로운 널 (null)
목적 재정의 꾸러미 개인
보호 반환 밀봉 슈퍼
던져 특성 시험
참된 유형 VAR
동안 수율
- : = =>
<- <: <% >
# @

스칼라 코멘트

스칼라는 자바 한 줄 주석을 지원하는 많은 유사하다. 여러 줄 주석은 중첩 될 수 있지만, 제대로, 기호를 종료 대응하는 기호로 시작하는 주석을 중첩해야합니다. 주 스칼라 컴파일러는 다음과 같은 예는, 무시됩니다 :

object HelloWorld {
   /* 这是一个 Scala 程序
    * 这是一行注释
    * 这里演示了多行注释
    */
   def main(args: Array[String]) {
      // 输出 Hello World
      // 这是一个单行注释
      println("Hello, world!") 
   }
}

공백 행과 공간

전용 공간이나 의견이 하나의 라인은 스칼라는 그것을 무시, 그것은 빈 줄 생각됩니다. 마크는 공백이나 분할하는 의견이 될 수 있습니다.


줄 바꿈

스칼라는 라인 지향 언어, 세미콜론으로 문이다 (;) 끝 또는 줄 바꿈. 스칼라 프로그램 명령문의 끝에 세미콜론 보통 선택된다. 당신은 하나를 입력하고자하지만, 문에 한 줄이있는 경우 또는 쓸 경우. 사용자가 연속 다중 문을 작성하는 경우 한편, 세미콜론 필요하므로. 예를 들면

val s = "本教程"; println(s)

스칼라 패키지

사용자 정의 패키지

스칼라는 두 가지 방법으로 패키지를 정의하는 스칼라 코드에서 키워드 패키지 패키지를 사용하여 정의한다 :

파일 헤더 패키지 이름을 정의과 제 법, 자바,이 방법은 모든 코드는 신문에 따라 배치된다. 예를 들면 :

package com.w3big
class HelloWorld

두 번째 방법은 예컨대, C 번호와 다소 유사

package com.w3big {
  class HelloWorld 
}

두 번째 방법은 사용자가 파일에 복수의 패키지를 정의 할 수있다.

시세

수입 키워드 참조 패키지를 사용하여 스칼라.

import java.awt.Color  // 引入Color
 
import java.awt._  // 引入包内所有成员
 
def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent
  ...  // 因为引入了java.awt,所以可以省去前面的部分
}

import 문이 아니라 파일의 상단에, 어디서든 나타날 수 있습니다. 명령문 블록의 끝까지 연장 가져 오기 결과. 이로 인해 이름 충돌의 가능성을 감소시킬 수있다.

여러 회원의 패키지를 도입하려는 경우 선택 (선택기)를 사용할 수 있습니다 :

import java.awt.{Color, Font}
 
// 重命名成员
import java.util.{HashMap => JavaHashMap}
 
// 隐藏成员
import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了

참고 : 패킷의 스칼라 머리, 스칼라을 사용할 때하는 것은 생략하는 이유를 기본 스칼라 항상 소개 java.lang._, scala._ 및 Predef._으로,여기에 당신은 또한 설명 할 수 있습니다.