1
0

More than 5 years have passed since last update.

もうそれtrueなんだから比較しないでくれ頼むから

Posted at

if文って?

世の中には様々な言語がありますが、どの言語にも大抵備わっている構文、「if文」。
「if」と記載した後ろに条件を書くことで、その条件を満たした時のみ実行させる処理を記載できる、プログラミングといったらコレだよコレって感じのアレです。

if文が成立する条件とは

上で「どの言語にも大抵備わっている」と書きましたが、それが成立する条件は言語ごとに異なります
ざっくり分けても以下のパターンがあり得ます。

  • 条件がtrueになった時
  • 条件がその言語でtrueと等価であるとされる値になった時
  • 条件が特定の値以外となった時
  • 条件がnullやnilといった空ではない時

世の中の「ほげほげ入門」や「サルでもわかるふがふが」みたいな本やページにはtrue/falseのパターンしか載っていないことも多々ありますが、ちゃんとした仕様は言語によって異なるのでお気をつけて。
(といってもtrue/falseを覚えてれば書けますが)

「true == trueやめてもらえます?」問題

初めて聞いたって?そら今作ったからね。
なんの話をしたいかというと、プロジェクトのコードをチェックアウトしてザーッと眺めた時に他の人が書いたであろう

「それ比較前にtrueですからぁ〜!残念ッ!」

なコードで見てぐんにゃりしてしまい、まだ午後一だというのに元よりクソみたいなプロジェクトのせいでほんの5g程度しかない仕事のやる気が雲散霧消する事態を避けるべく、ついでに言ってしまえばさも言語に詳しい風を装ってチームに情報共有し自身の成功体験とチームからの信頼を勝ち取ろうという極めて前向きなディスりをしていこうという話です。(ここまで一呼吸で)

先に述べた通り、言語によって異なるのでここから先はお使いの言語で調べてみてください。
今回はmatlabというググラビリティ皆無の言語でやっていきます。

if文の 仕 様 を確認 し よ う (たのめーる的ギャグ)

どこで確認するか、公式リファレンスだよ。それ以外信じちゃダメ、ゼッタイ。

if, elseif, else

説明のところを読んでみると、

if expression, statements, end は、式を評価し、式が真 (true) であるときに一連のステートメントを実行します。

ふむふむ、「true」で実行するのは他の言語と変わりませんね。
ただ、その後ろに気になることが書いてありますね。

結果が空でなく、非ゼロの要素 (論理値または実数値) のみが含まれる場合に、式は true になります。それ以外の場合は、false です。

これを知っているか否かでif文の組み方が変わってしまいます。

例えば、文字列中に特定の文字列が含まれている場合を想定してください。(ていうかその状況でこの記事思いついたんだけど)
以下では「hogehoge」という文字配列から「eho」を探し、見つかったら開始インデックスを、見つからなかったら空配列を返してくることを想定しています。


if strfind('hogehoge', 'eho') ~= 0
    % ステキなサムシング………………………………………………カモン!
end

not equalで比較してるので正しそうですが、if文の仕様に照らし合わせると、以下で十分な訳です。


if strfind('hogehoge', 'eho')
    % 話は変わるけど、サトームセンもうないんだよね
end

言語仕様がわかってるとコード量が少なくて済むので、知ってる構文も調べてみてはいかがでしょうか。
(そして暇な時間を潰しましょう)

文体がぶっ飛んでるけど今日どしたの?

にほんしゅはおいしい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0