F#でのクラスの基本的な作り方
概要
F#は関数型言語であるが、オブジェクト指向プログラミングの機能も提供している。この記事では、F#でクラスを定義する基本的な方法について解説する。
コンテンツ
- クラスの定義
- プロパティとメソッドの定義
- クラスのインスタンス化
- クラスの継承
1. クラスの定義
F#でクラスを定義するには、
キーワードを使用する。例えば、以下のようにして
クラスを定義することができる。
type Person =
class
val mutable name : string
new (name:string) = { name = name }
member this.Name = this.name
end
2. プロパティとメソッドの定義
上記の例では、
というプロパティと
というメソッドを持つ
クラスを定義している。
は可変なプロパティを宣言するための修飾子であり、
はコンストラクタを定義するためのキーワードである。
3. クラスのインスタンス化
定義したクラスをインスタンス化するには、通常の関数呼び出しと同様に行うことができる。以下は
クラスをインスタンス化し、その
メソッドを呼び出す例である。
let person1 = Person("Alice")
printfn "Name: %s" person1.Name
4. クラスの継承
F#ではクラスの継承もサポートされており、以下のようにしてクラスを継承することができる。
type Employee(name:string, id:int) =
inherit Person(name)
member this.ID = id
上記の例では、
クラスが
クラスを継承しており、
という追加のプロパティを持っている。
サンプルコード
以下は、全体のまとまりを示したサンプルコードである。
type Person =
class
val mutable name : string
new (name:string) = { name = name }
member this.Name = this.name
end
let person1 = Person("Alice")
printfn "Name: %s" person1.Name
type Employee(name:string, id:int) =
inherit Person(name)
member this.ID = id
まとめ
F#でクラスを定義するには、
キーワードを使用してクラスの構造を定義し、プロパティやメソッドを追加することができる。また、クラスの継承もサポートされており、オブジェクト指向プログラミングの機能を活用することができる。
よくある質問
- Q. F#でクラスを作成する方法は?
-
A: F#では
typeキーワードを使用してクラスを作成します。例えば、
type MyClass = classというように記述します。
-
Q. F#のクラスにはコンストラクターがありますか?
-
A: はい、F#のクラスにはコンストラクターがあります。
newキーワードを使用してコンストラクターを定義します。
-
Q. F#のクラスでメソッドを実装するには?
-
A: F#のクラスでメソッドを実装するには、メソッド名とパラメーターを定義し、その後に処理を記述します。例えば、
member this.MyMethod(param) = //処理というように記述します。
-
Q. F#のクラスでプロパティを定義するには?
-
A: F#のクラスでプロパティを定義するには、
member valキーワードを使用してプロパティを定羂します。例えば、
member val MyProperty = 0 with get,setというように記述します。
-
Q. F#のクラスで継承を行う方法は?
- A: F#のクラスで継承を行うには、
inherit
キーワードを使用して親クラスを指定します。例えば、
type DerivedClass() = inherit BaseClass()というように記述します。