トラック
/
C#
C#
/
演習
/
The Weather in Deather
The Weather in Deather

The Weather in Deather

学習演習

はじめに

式形式のメンバー

構造体やクラスの多くのメンバー(主な例外はフィールドです)は、式形式のメンバー構文を使えます。メンバーを式で定義すると、従来のブロックや文を使うよりも簡潔で読みやすいコードになることがよくあります。

メソッドと読み取り専用プロパティは、式形式の本体で定義できるメンバーに含まれます。

public int Times3(int input) => input * 3;

public int Interesting => 1729;

switch式

switch式を使うと、値を一連のパターンのうち1つのケースに照合し、対応する値を返したり、対応する処理を行ったりできます。この対応は=>記号で表します。さらに、各パターンにはwhenキーワードで導入する省略可能なケースガードを付けられます。そのswitchの「アーム」が選ばれるには、ケースガードの式がtrueと評価される必要があります。ケース(_switchアーム_とも呼ばれます)は記述された順に評価され、一致が見つかるとすぐに処理は打ち切られ、対応する値が返されます。

double xx = 42d;

string interesting = xx switch
{
    0 => "I suppose zero is interesting",
    3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
    3.14 => "π",
    42 => "a bit of a cliché",
    1729 => "only if you are a pure mathematician",
    _ => "not interesting"
};

// => interesting == "a bit of a cliché"

三項演算子による条件式

三項演算子を使うと、if条件を文ブロックではなく式の中で定義できます。これは関数型プログラミングのアプローチに通じるもので、コードをより表現豊かに、よりエラーが起きにくくできることがよくあります。

三項演算子は3つの式を組み合わせます。条件と、その条件がtrueのときに評価されて返される式(?で導入されるifの部分)、そして条件がfalseのときに評価されて返される式(:で導入されるelseの部分)です。

int a = 3, b = 4;
int max = a > b ? a : b;
// => 4

throw式

throw式はthrow文の代わりになるもので、特に三項演算子やその他の複合式の力を高めてくれます。

string trimmed = str == null ? throw new ArgumentException() : str.Trim();

説明

気象観測所に関するレガシーコードの改善を依頼されました。

気象観測所は測定値を受け取り、気温や気圧などの指標を出力します。

1. 適切なメソッドを簡潔で読みやすくする

WeatherStationクラスの中で適切なメソッドは、式形式のメンバーを使ってリファクタリングしましょう。また、適切な箇所では三項演算子やswitch式を使うと、表現力を高められ、エラーを減らせる可能性があります。

すべてのテストが引き続き通ることを確認してください。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
C# Exercism

The Weather in Deatherを始める準備はできましたか?

Exercismに登録すれば、62個のコンセプト178個の演習、そして本物の人間によるメンタリングとともに、C#を学んでマスターできます。すべて無料です。