戯言。PHPの限界。ワンライナーに向かないスクリプト言語。

徒然草2.0

まあ、今更なんですが。rubyやっている時もphpを捨てたくなったことはありましたが。。

Paizaスキルチェックでプログラミングの問題を解いていた。

で、ある配列の最大値を取得するプログラムをPHPで書いてみた。

ちなみにmax()を使うとスマートなのですが2番目に大きい数値も欲しかったので、rsortで降順にソートしてから添字0の最大値、添字1の2番目に大きい数を取得したのだが…以下の通り。3行です。今どきのスクリプトなら1行になると思いますが、これ以上縮められなくね?rsortが参照を飛ばす関数だからで戻り値を返す関数/メソッドであれば1行にできなくもないけど、短く書きたい時には限界だと感じました。いや似たようなシーンでゴリゴリ書いていると野暮ったいと感じることはしばしばありますが、ひさびさに悩んでしまった。php言語の野暮ったいところに(汗)


$a = [0, 2, 1];

rsort($a);

echo $a[0];

rubyなら1行で、[0, 2, 1].sort.reverse.at(0)みたいに書けるっぽいですが、もっと短くかけるかもしれませんが、jsやpythonでも似たような感じだと思います。

…というか配列に[]というコの字のカッコつかうの面倒。phpの場合は変数の頭に$がいる。これも流石に野暮ったい。

余談ですが…phpにかぎらずどんな言語でもですが$a[0]をa0とかって書ければいいのに。

配列表現の[]って2文字必要で面倒では。rubyとかだと.0みたいにオブジェクトの添字とかって感じに書けるんでしょうか?

(変数末尾に数字を付与することを認めないか、aが配列に限っては配列要素になるとか…ややこしいか)であれば、せめてa.0とかa-0とかにしてほしい。変数末尾が数字であることを文法的に許可するならハイフンとかで添字を表す区切り文字にすればいいのではないか。とにかく短い表現が可能だとよい。jsかrubyあたりが最適になるんだろうか。

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

タイトルとURLをコピーしました