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

IEEE Spectrumのプログラミング言語ランキング、総合1位はJava」記事へのコメント

  • 捨てるために読めないとダメとかそんな感じじゃないのか

    • Re: (スコア:0, 荒らし)

      宗教上の理由でM$(笑)起源のC#を使えない人たちに人気ですよ

      • C#はラムダ式をvarで格納できないという素晴らしい個性がありますね。

        C#もjavaのこと言えない位に行き当りな機能追加で言語仕様はアレだろう。第一級関数が普通の言語と比べると古臭いのはjavaと変わらない。
        unix系でjavaを置き換えるのは多分Go言語、言語仕様がシンプルで速度も出て安全性も高い。

        • by Anonymous Coward
          > C#はラムダ式をvarで格納できないという素晴らしい個性がありますね。

          その理由わかっていってる?
          これなら一応できるけど。

          var y = new Func<int>(() => 1);
          • そのvarが推論しているのはラムダ式ではなくてFunc<int>
            だから。

            var mul=new Func<int,int,int>((int x,int y)=>{return x*y;});

            引数を持つラムダ式の場合、引数の指定が冗長になる。
            そもそも普通はこうかくだろう。

            Func<int,int,int> mul=(int n,int y)=>{return n*y;};

            • by Anonymous Coward
              > 引数の指定が冗長になる。
              と言いながら直ってないね。
              (ひょっとして引数の型指定をしないけないから冗長になるって言ってる?)

              それでもあなたはわかっているのだろうとは思うけど、型の推論が関数型言語ほどでないという弱さはある。
              このコードで冗長なのはFuncで型を知らせないといけないところ。

              でも Haskellだって型クラス制約つけるし、そんなにダメとは思わないんだよな。

              とりあえず、

              var mul=new Func<int,int,int>((x, y)=>{return x*y;});

              Func<int,int,int> mul=(n, y)=>{return n*y;};

              だね。引数に型名はつけなくていい。
              Funcの型指定があるからその程度の型推論ならできてる。無印の.NET 3.5から可能。

              あと「普通」は君の主観でしかない。変数名の先頭をそろえたいという好みの人もいる。

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...