스칼라 기본 문법
이전에 자바 프로그래머, 자바 언어의 기초를 배우고, 그렇다면 당신은 신속하게 기본 문법 스칼라를 배울 수 있습니다.
문장의 끝에 스칼라 세미콜론, 선택 사항입니다 : 스칼라와 자바의 가장 큰 차이입니다.
우리는 스칼라 프로그램 생각할 수있는 것은 메시징을 구현하기 위해 각 메서드 호출에 의해 개체의 컬렉션입니다. 다음으로, 클래스, 객체, 메소드, 인스턴스 변수의 개념을 이해하게 :
객체 - 객체 속성과 행동을해야합니다.예를 들어 개 같은 속성 : 색상, 이름, 행동 : 호출 실행, 등등 먹고. 객체 클래스의 인스턴스이다.
클래스 - 클래스는 추상 객체이며, 객체 클래스의 특정 인스턴스이다.
방법 - 기본 법에 기재된 방법은, 클래스는 여러 방법을 포함 할 수있다.
필드 - 각 객체가 인스턴스 변수, 즉 필드의 고유 한 집합이 있습니다.필드 할당을 통해 객체의 속성을 만들 수 있습니다.
첫 번째 스칼라 프로그램
대화 형 프로그래밍
대화 형 프로그래밍은 다음 명령을 호출 할 수 있습니다, 스크립트 파일을 만들 필요가 없습니다 :
$ 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._으로,여기에 당신은 또한 설명 할 수 있습니다.