モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

今日から始める F# “Day 2” クラス

 二日目にしてめんどくさくなったとか口が裂けても言えない。とりあえず今日はクラス宣言のお話。

概要

  1. クラス
  2. まとめ

1. クラス

 まだあまりこねくり回してないのでわからないですが、クラスは次のように書けばいい。

type Person(name: string, age: int) =
    do
        printfn "%A %A" name age
    member this.Name = name
    member this.Age = age

 簡単なサンプル。member はプロパティーです。C# 6.0 ではかなりこれに近くなりますが 5.0 だとこんな感じ((readonly 属性をわざわざつけるか、といわれたら難題ではある)。

 do の前に let による束縛も可。外部にプロパティーとして公開しないならそれで十分。

class Person
{
    private readonly string _name;
    private readonly int _age;

    public Person( string name, int age )
    {
        this._name = name;
        this._age = age;
    }

    public string Name { get { return this._name; } }

    public int Age { get { return this._age; } }
}

 結構めんどくサイ。

 型推論の威力は強いです。本当に。F# 使いこなせれば早く書けそうだし、F# である程度書くってことも視野に入れれるのもアリかもです。逆にいえば、私は ushort とかそのあたりの型を多用するので、わざわざ F# でそれをやっちゃうと F# の良さが最大限に生かせないかもしれません。良さを生かすには型推論を最大限に活用する感じがいいでしょう。(つまり今のようなケースは最適かも。型考えるのがやたら苦労した (脳への負担)。)

 初期化は単純。

let me = new Person("mntone", 21)

 これはまあ .NET 系やってる人なら問題ないでしょう。

2. まとめ

 もはや 2 日目から雑になってしまった印象がありますが、仕方ないです。ただ、面白い言語であるのは間違いないと。

 そうですね、次 Twitter クライアントでも書く機会があれば F# をぜひ活用したいな、って思った限りですね。GUI 以外の部分は F# でいいでしょう、ってレベルで F# との相性はよさそうです。

 F# の IDE 周り [F12]、インテリセンス、などそれらの要素が強化されればもっとスムースなプログラミングができる気はします。そしたら C# なんて使わないでもいいかもしれませんね。(C# は書く分量が多くて読み直してるときにもそれなりに読む分量が多くなってしまうのがなぁ… C# 6.0 でかなり改善されますが…)

appendix. おまけ

 とりあえず隔日みたいなあほなことを行ってしまったので、Day 2 のクオリティーがクッソ低くなってしまった印象はある。とりあえず 3 日に 1 回程度に頻度下げようかな、って思ったりしてるんだけど… とりあえず今は C++/CX 案件やりたいので…