Scala チュートリアル Scala は、オブジェクト指向プログラミングと関數(shù)型プログラミングのさまざまな機(jī)能を統(tǒng)合するように設(shè)計(jì)されたマルチパラダイム プログラミング言語(yǔ)です。
Scala はマルチパラダイム プログラミング言語(yǔ)であり、Java に似たプログラミング言語(yǔ)であり、スケーラブルな言語(yǔ)を?qū)g裝し、オブジェクト指向プログラミングと関數(shù)型プログラミングのさまざまな機(jī)能を統(tǒng)合するように設(shè)計(jì)されています。
最初の Scala プログラム
以下は、Scala で書(shū)かれた典型的な Hello World プログラムです:
Example
object HelloWorld extends App { println("Hello, world!") }
インスタンスの実行>>
[インスタンスの実行] ボタンをクリックしてオンライン インスタンスを表示します
または
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
インスタンスの実行>>「インスタンスの実行」ボタンをクリックしてオンライン インスタンスを表示します
これが Java の Hello World アプリケーションとどのように似ているかに注意してください。大きな違いの 1 つは、Scala バージョンの Hello World プログラムでは、static キーワードを使用して main メソッドを靜的メソッドとしてマークせず、object キーワードを使用してシングルトンを作成することです。
プログラムが HelloWorld.scala ファイルとして保存されているとすると、次のコマンド ラインでコンパイルできます:
> scalac HelloWorld.scala
実行方法:
> scala -classpath . HelloWorld
これはJava のコンパイルと実行と同じです?!窰ello World」プログラムは非常によく似ていませんか?実際、Scala のコンパイルおよび実行モデルは Java と同等であるため、Ant などの Java のビルド ツールとも互換性があります。
オプション -i を使用して、Scala インタープリターを使用してプログラムを直接実行することもできます。 (ファイルからコードをロード) およびオプション -e (追加のコードを?qū)g行するには、HelloWorld オブジェクトのメソッドを?qū)g際に実行する必要があります):
> scala -i HelloWorld.scala -e 'HelloWorld.main(null)'
ヒント: Our Scala チュートリアルScala を初心者から上級(jí)レベルまで學(xué)習(xí)するのに役立ちます。ご質(zhì)問(wèn)がある場(chǎng)合は、PHP 中國(guó)語(yǔ) Web サイト Scala Community にアクセスして質(zhì)問(wèn)してください。熱心なネチズンが答えてくれます。
Scala の機(jī)能
サポートされるプログラミング パラダイム
オブジェクト指向の機(jī)能
Scala はすべての値がオブジェクトである純粋なオブジェクト指向言語(yǔ)。オブジェクトのデータ型と動(dòng)作は、クラスと特性によって記述されます。クラス抽象化メカニズムを拡張するには 2 つの方法があります。 1 つのアプローチはサブクラスの継承であり、もう 1 つのアプローチは柔軟なミックスイン メカニズムです。これら 2 つのアプローチにより、多重継承の問(wèn)題を回避できます。
関數(shù)型プログラミング
Scala は関數(shù)型言語(yǔ)でもあり、その関數(shù)は値として使用することもできます。 Scala は、匿名関數(shù)を定義するための軽量の構(gòu)文を提供し、高階関數(shù)をサポートし、複數(shù)レベルの関數(shù)のネストを許可し、カリー化をサポートします。 Scala の case クラスとその組み込みパターン マッチングは、関數(shù)型プログラミング言語(yǔ)で一般的に使用される代數(shù)型と同等です。
さらに、プログラマは Scala のパターン マッチングを使用して、正規(guī)表現(xiàn)に似たコードを記述して XML データを処理できます。このような狀況では、形式的なクエリを作成するためにリスト內(nèi)包機(jī)能が役立ちます。
JVM は末尾再帰をサポートしていないため、Scala は末尾再帰の最適化を完全にはサポートできません。ただし、Scala コンパイラーは、いくつかの単純な末尾再帰をループに最適化できます。
次のコードは、関數(shù)型スタイルでクイック ソート アルゴリズムを?qū)g裝しています。Erlang のクイック ソートの例と比較できます。
def qsort(list: List[Int]): List[Int] = list match { case Nil => Nil case pivot :: tail => val(smaller, rest) = tail.partition(_ < pivot) qsort(smaller) ::: pivot :: qsort(rest) }
靜的型
Scala には型システムがあります。 、コンパイル時(shí)間チェックを通じて、コードのセキュリティと一貫性を確保します。型システムは特に次の機(jī)能をサポートします:
汎用カテゴリ、
共分散と反分散、
-
マーク、
型パラメーターの上限および下限制約、
カテゴリと抽象型をオブジェクト メンバーとして扱う、
複合型、
自分自身を參照するときに型を明示的に指定、
View、
多態(tài)性メソッド。
拡張性
Scala は、実際にはドメイン固有のアプリケーション開(kāi)発ではそのドメイン固有の言語(yǔ)拡張が必要になることが多いという事実に準(zhǔn)拠するように設(shè)計(jì)されています。 Scala は、ライブラリの形式で新しい言語(yǔ)構(gòu)造を簡(jiǎn)単かつシームレスに追加できる獨(dú)自の言語(yǔ)メカニズムを多數(shù)提供しています。
任意のメソッドを前置演算子または後置演算子として使用できます。
クロージャは、予想されるタイプに基づいて自動(dòng)的に構(gòu)築できます。
上記 2 つの機(jī)能を組み合わせて使用??すると、構(gòu)文を拡張したり、マクロなどのメタプログラミング機(jī)能を使用したりせずに、新しいステートメントを定義できます。
同時(shí)実行
Scala は、同時(shí)実行モデルとして Actor を使用します。Actor は、メールボックスを介してメッセージを送受信するスレッドのようなエンティティです。アクターはスレッドを再利用できるため、プログラムでは數(shù)百萬(wàn)のアクターを使用できますが、スレッドは數(shù)千のアクターしか作成できません。 2.10 以降のバージョンでは、Akka がデフォルトのアクタ実裝として使用されます。 [20] 次のコードは、Actor モードを使用した EchoServer 実裝です。
val echoServer = actor(new Act { become { case msg => println("echo " + msg) } }) echoServer ! "hi"
Actor モードは、同時(shí)プログラミングを簡(jiǎn)素化し、マルチコア CPU の機(jī)能を活用できます。
この Scala チュートリアル マニュアルの內(nèi)容
この Scala チュートリアルでは、基本的な Scala 構(gòu)文、Scala データ型、Scala 変數(shù)、Scala 演算子、Scala 関數(shù)、はじめになど、Scala の基本および高度な知識(shí)をすべてカバーしています。 Scala 文字列、Scala クラスとオブジェクトなど、Scala のすべての基本的および高度な知識(shí)。
ヒント: このチュートリアルの各章には、多くの Scala のサンプルが含まれています。[サンプルの実行] ボタンを直接クリックすると、結(jié)果をオンラインで表示できます。これらの例は、Scala をよりよく理解し、使用するのに役立ちます。
最新章
- Scala 文件 I/O 2016-10-18
- Scala 提取器(Extractor) 2016-10-18
- Scala 異常處理 2016-10-18
- Scala 正則表達(dá)式 2016-10-18
- Scala 模式匹配 2016-10-18
- Scala Trait(特征) 2016-10-18
- Scala 類(lèi)和對(duì)象 2016-10-18
- Scala Iterator(迭代器) 2016-10-18
関連コース
- 最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース) 2022-02-17
- PHP でビジネスを始めることについて簡(jiǎn)単に説明しましょう 2023-01-04
- 恥ずかしいことの百科事典サイトを模倣したミニ版MVCフレームワークの大規(guī)模実踐天龍寶開(kāi)発 2018-01-25
- ログイン認(rèn)証と従來(lái)の掲示板 2018-03-02
- PHP 実踐開(kāi)発入門(mén): PHP クイック作成 [中小企業(yè)フォーラム] 2022-06-28
- クイックスタート Node.JS フルバージョン 2022-09-30
- 獨(dú)自の PHP MVC フレームワークを作成する (40 章の詳細(xì)/詳細(xì)/初心者が先に進(jìn)むには必読) 2022-12-08
- ホースソルジャースプリングビデオチュートリアル 2022-04-12