startalks

スマホアプリ(Android/iOS)、IoT、AI、データサイエンス

【Scala】環境設定からScala言語入門

・環境構築

 ・JDKインストール(詳しい説明は割愛)

 ・Scalaインストール

  https://www.scala-lang.org/download/

  f:id:startalks:20181229222203p:plain

 

IDE

 IntelliJScalaプラグインを入れる。

 Configure⇒Plugins⇒BrowseRepositoriesで「scala」を検索してInstallする。

f:id:startalks:20181230081256p:plain

IntelliJを再起動したらScalaの新規プロジェクトを作成できるようになる。

f:id:startalks:20181230081453p:plain

 

 ・Hello, World!

package scala

object HelloWorld{
def main(args: Array[String]): Unit ={
println("Hello, world!")
}
}

 右クリックしてRun

f:id:startalks:20181230085823p:plain

結果が出力される。

f:id:startalks:20181230085840p:plain

 

・基本文法

 ・ソースファイル名:*.scala

 ・小文字と大文字が区別される。

 ・クラスの頭文字が大文字。

 ・クラス名がファイル名と一致させる。(推奨)

 ・メソッドの頭文字が小文字。

 ・キーワード(50個)

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  
- : = =>
<- <: <% >:
# @

 

・データ型

 ・Byte

 ・Short

 ・Int

 ・Long

 ・Float

 ・Double

 ・Char

 ・String

 ・Boolean

 ・Unit:値無しを表す。voidと同等。

 ・Null

 ・Nothing:他クラスの子クラス。

 ・Any:他クラスの親クラス。

 ・AnyRef:レファレンスクラスの親クラス。

 

リテラル

 ・int型:数字、数字L

 ・float型:小数、小数f

 ・bool型:true/false

 ・Symbol:'シンボル

 ・Char:'文字

 ・String:"文字列

 

・変数

 var myVar : String = "Foo"

 

・定数

 val myVal : String = "Bar"

 

・アクセス修飾子

 ・private:同じパッケージ内でアクセス可能。

 ・protected:同じクラス(子クラス含む)からアクセス可能。

 ・public:他のパッケージからもアクセス可能。

 

・フローコントロール

 ・if...else

 ・while/do...while/for

 

・メソッド

 def functionName([refList]) : [return type] = {

        function body

        return[expression]

    }

 

クロージャ

 

・文字列

 

・配列

 

・コレクション

 

イテレータ

 

・クラス

 

・Trait(特徴)

 Javaのインターフェース+抽象クラスに相当する概念。

 例)

 trait Equal{

        def isEqual(x: Any): Boolean

        def isNotEqual(x: Any): Boolean = !isEqual(x)

    }

 

・match

    例)

 def matchTest(x: Any): Any = x match {

        case 1 => "one"

        case "two" => 2

        case y: Int => "scala.Int"

        case _ => "many"

    }

 

正規表現

 

・エラーハンドリング

 

・Extractor