はかせのラボ

私の頭の中を書いていく雑記ブログです

C# 三項演算子

あいさつ

どうも、はかせです。
前回AWSのサービスをなめてみて
とりあえず入り口である認証からと思いCognitoを使ってみようとしました。
ただまぁ私のTwitterとか見てもらえればわかると思いますが、
現在全く何もできておりません(´;ω;`)

ただ何もできねぇってのを記事にするのも忍びないので、
今回はサンプルコードでも見かけた三項演算子について書きます。
※この記事ではC#三項演算子について取り扱います

三項演算子とは

名前の通り三つの値を扱う演算子です。
扱う値は
・条件式のbool
・true時の値
・false時の値

この三つです。
とりあえずまずは例をば

static void Main(string[] args)
{
    string msg = "";
    int num = 0;
    while (true)
    {
        Console.Write("数値を入力してください(0で終了):");
        num = int.Parse(Console.ReadLine());
        if (num == 0) break;
        //ここで三項演算子
        msg = num % 2 == 0 ? "偶数" : "奇数";
        Console.WriteLine(msg);
    }
    Console.ReadLine();
}

ユーザーの入力した値の偶奇判定をするプログラムになります。
三項演算子はこの部分ですね。

 //ここで三項演算子
msg = num % 2 == 0 ? "偶数" : "奇数";

入力された値を2で割った余りが0ならば偶数、
0以外ならば奇数と判定しています。
使い方は以上ですね。

三項演算子を使う場面

三項演算子が有用な場面はほぼ決まっています。
それは
一つの条件式の真偽だけで値が一意に決まる場合
私はこの場面のみ三項演算子を使うべきだと考えています。

例えば例で挙げた偶奇判定。
これは値を2で割り切れるか否かだけで
偶数か奇数かが決まります。

この偶奇判定を素直にif文でやると

if (num % 2 == 0)
{
        msg = "偶数";
}
else
{
        msg = "奇数";
}

こうなりますよね。
これが三項演算子を使うと

msg = num % 2 == 0 ? "偶数" : "奇数";

8行あったものが1行にまとまりました。
見方もベーシックだとかエクセルだとかで見るような書式に近いので
割とわかりやすいと個人的には思っています。

使うべきでない場面

上記の例に該当しない場面全てですね。
色んなところで三項演算子は使うなとか言われるのは
この背景があると思います。

理由は上記の例に当てはまるような場面以外だと
どんどん普段見慣れない形になっていって見づらくなるからです。

hoge =
  hoge == "a" ? "b" :
  hoge == "b" ? "c" :
//以下無限に続く・・・

まぁネストとか絡んでくるとこんなんなってくるわけです。
なので使っていい場面以外は使うべきではないでしょう。

あとがき

今回はサンプルなどでよく見る三項演算子についてでした。
私自身は1行でまとまるし、割と見慣れてるしで結構好きなんですが、
苦手な人は結構いるイメージです。

ただサンプルのコードだとか
ライブラリのコードとかだと
少しでも行数を減らそうとしてなのかこの書き方を使われることが
多い印象です。

完全理解はできなくてもこんな動きしてるんだくらいは
追えるようになっておくと何かと便利なのではないでしょうか。

それでは今回はこの辺でノシ

AWS AWSのサービスをなめてみる

あいさつ

どうも、はかせです。
前回AWSAPIGatewayを使おうとして
なんか色々あってよくわからんってなってしまったので
ちゃんとAWSを勉強しようと思いました。

とりあえずAWSのサービスを一通り見てみて
使いそうなサービスをまとめてみました。
(今後ブログでやるかもしれませんね)

Amazon Cognito

アプリごとのユーザー認証とかのサービスです。
他のサービスとか使うときの権限の管理とかもできるみたいです。
aws.amazon.com

Amazon DynamoDB

規模とか気にせず使えるNoSQLサーバーです。
NoSQLってのは名前の通りSQLを使わず操作できるDBになります。
1つのKeyに1つのValueが該当するKey-Valueが多いイメージですね。
aws.amazon.com

Amazon Simple Storage Service(S3)

色んなデータをかなりの大容量で保存しておけるサービスです。
とりあえずファイルとかDynamoDBに放り込めないような
データとかはここに放り込めば良さげかなと思っております。
aws.amazon.com

Amazon Simple Notification Service(SNS)

メッセージングをしてくれるサービスです。
(こいつの仕様次第ではやりたいことの大半がこれだけでできるかも)
プッシュ通知とか作るときに使われたりするそうです。
aws.amazon.com

Amazon Lambda

今までAlexaとかで使ってきたサービスですね。
ここにコード書いて保存しとけば
サーバーとか割と気にせず処理が作れます。
aws.amazon.com

Amazon API Gateway

前回使おうとして軽く挫折したやつですね。
(サンプルが動かないと割とわかんなくなる雑魚はかせです)
こいつを使えばAPIが作れるらしいです。
aws.amazon.com

あとがき

今回はAWSのサービスの中で
使いそうだなと思ったもののピックアップでした。

AWSを本採用するかさえ未定の状態でがっつりAWSの勉強するのは
如何なものだろうかとおもっていましたが、
適当にやってたら変なとこにつまって死ねる未来が見えたので
AWSをとりあえず触れるよってぐらいには
勉強しようと思いました。

それでは今回はこの辺でノシ

参考

一覧を見たサイト
数えたくないほどたくさんのサービスがある模様
qiita.com