削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎例外処理: Javaの場合は、例外を発生させる可能性のあるメソッドは、throws節で発生させる例外の種類をすべて宣言する必要があります。 ただし、RuntimeException(RuntimeExceptionの派生クラス)の場合は、throws節で明示的に記述する必要はありません。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎クラス定義とインスタンス化とメソッド: Scalaは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。 より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。 クラス(''class'')は、オブジェクトを作る雛形で、クラスから new 演算子を使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
タグ: 2017年版ソースエディター
659 行
 
== クラス ==
Scalaは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスから new 演算子を使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
 
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=scala コード例]:<syntaxhighlight lang=Scala highlight="2-5" line>
object Main extends App {
class Hello(val s: String = "world") {
override def toString: String = s"Hello $s!"
def print: Unit = println(s)
}
 
val hello1 = new Hello()
println(hello1)
hello1.print
 
val hello2 = new Hello("my friend");
println(hello2)
 
print(s"""
Hello.getClass() === ${Hello.getClass()}
hello1 === ${hello1}
hello2.s = ${hello2.s}
""")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
 
Hello.getClass() === class Main$Hello$
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[TypeScript#クラス]]の例を、Scala に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
 
== ケースクラス ==