パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Twitterで「三項演算子」がトレンド入り」記事へのコメント

  • 発端? (スコア:3, 参考になる)

    by Anonymous Coward

    きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな

    https://twitter.com/fnya/status/1192036095820615680 [twitter.com]

    • C言語で条件の部分が数値にしか見えない場合は可読性が多少上がるかもしれない。
      ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。

      • by Anonymous Coward

        最近、

        (cond) ? (a = 1) : (a = 2);

        ってコードを見かけてちょっと頭を抱えた。

        if (cond) { a = 1; } else { a = 2; }

        a = (cond) ? 1 : 2;

        か、どっちかにしろ、と。

        三項演算子は「代入処理は一つ(代入先は同じ)」であることを明確にできるのが、ifに対するメリットだと思うが、この例だと台無しというか両方の悪いところ取りでもう。
        一番可読性いいのは、

        a

        • by Anonymous Coward

          ALGOLからLisp、ML、Haskellあたりの関数型言語は大抵if式ですね。
          Smalltalkのやつも式と言うのかな

          • by Anonymous Coward on 2019年11月09日 19時58分 (#3713654)

            SNOBOLは構造化プログラミングが提唱される以前の言語であるため、ループは基本的に無条件分岐(goto文)で行われる。全ての式は実行後、次に処理する行のラベルを選択でき、省略時は次の行が実行される。標準入出力はINPUT/OUTPUTという変数に代入処理を行うことで実行される。if文に相当する物は無く、代わりに式を実行後、成功か失敗かで次に処理する行を変更することができる。これは具体的には

                    LINE = INPUT :S(LABEL1) F(LABEL2)
            のような場合(これは標準入力から1行読み込み変数 LINEに代入している)、その処理が成功した場合は LABEL1の行の処理へ、失敗した場合は LABEL2の行の処理へ遷移することを表している。

            論理値ではなく成功・失敗で分岐するところがおもしろい
            例外ともまた違う

            同じ人が作った構造化言語であるIcon [wikipedia.org]も似たかんじ
            こちらは他の言語に先んじてジェネレータなどがある

            親コメント
            • by Anonymous Coward

              SNOBOLは学生の頃に授業で使わされたことがあります。
              数年前(数年先輩)の学生が、学科のコンピュータ用に処理系を作ったと聞きました。
              可変長の文字列処理に長けた言語という印象だけ残っていますが、ほとんど覚えていません。

              内容のないコメントですが、懐かしかったので。

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

処理中...