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

次期PHPでは、引数や返り値のスカラー型宣言が可能に」記事へのコメント

  • by Anonymous Coward

    「戻り値」が「return value」の一般的な訳語かと思っていたけど、PHPでは違うんでスカイノ。

    #PHPは入門書の数ページしか読んでいない(「当座数年内の私の業務には関係ない」と悟った)ので、
    #見当はずれだった(「戻り値」とは概念の異なる用語として扱われているなど)らすまない

    • by Anonymous Coward on 2015年03月28日 17時05分 (#2786469)

      言われるまで気にしたこともなかったですが、PHPのリファレンスだと確かに「返り値 [php.net]」となってますな。

      仕事でそれなりの規模があるアプリをPHPで開発しているので、型が宣言できるようになるのは非常に助かります。
      引数が数値だったり文字列だったり、はたまたobjectを返すかと思ったらfalseを返してたり、PHPしかやってない人のソースはわけわからんわ・・・。

      親コメント
      • Re:返り血? (スコア:3, 興味深い)

        by taka2 (14791) on 2015年03月28日 19時24分 (#2786529) ホームページ 日記

        > 引数が数値だったり文字列だったり、
        引数の型を変える方は、静的型付けなJavaやC++とかでも「関数のオーバーロード」がありますので、PHPが特殊というわけでもないでしょう。

        > はたまたobjectを返すかと思ったらfalseを返してたり、PHPしかやってない人のソースはわけわからん

        こっちはPHPなどの動的型付け言語に特有な話ですが、それは利用者の問題ではないでしょう。PHPの組み込み関数レベルで、「エラー時はfalseを返す」ような仕様はあふれてますよ。
        状況に応じて返り値の型を変えられる、というのは動的型付け言語の醍醐味といっていいんじゃないかと思います。

        とはいえ、PHP組み込みのstrpos(文字列検索関数)などのような「見つかった時は、見つけた位置(0オリジン)を返す」「見つからなかった時はfalseを返す」という設計仕様が、
        PHPの「false == 0」が真になるという言語仕様とあいまって、「if (strpos(…) != false) {」って記述だと「0桁目で見つかっても見つからなかったことになる」から「そういう時は型チェックを厳密に行う === / !== を使え」ってことになるわけですが。

        PHPは「手軽さ」を売りにしつつ「手軽に使おうとすると罠にはまる」というひどい言語になっちゃってるんだよねぇ…

        # 0 と false と null に別の意味を持たせて使い分けるハメになった時は、ちょっと後悔しました。

        親コメント

※ただしPHPを除く -- あるAdmin

処理中...