PHP で引数をそのまま返す関数を作っておくと便利
PHP では以下のように new してすぐメソッドを呼べない
<?php new DateTime()->getOffset();
なので、引数をそのまま返す関数を作ってやると
<?php function expr($a) { return $a; } expr(new DateTime())->getOffset(); // OK!
便利だなー
おまけ
配列アクセス用のも作っておくと便利
<?php function expr($a) { return $a; } function idx($array, $i) { return $array[$i]; } echo idx(idx(expr(new DateTimeZone('Asia/Tokyo'))->getTransitions(), 0), 'abbr') . "\n";
おまけ2
無名関数をそのまま呼ぶときにも使える。
<?php function expr($a) { return $a; } expr(function() { echo "hello\n"; })->__invoke();
おまけ3
配列は、以下のようにして繋ぐことも
<?php class Ref { var $val; function __construct($a) { $this->val = $a; } } function ref($a) { return new Ref($a); } ref(array(1, 2, 3))->val[0];
PHP → JavaScript
やっぱ lambda ないとつまんないと思うんだな。
PHP じゃ Y コンビネータつくれないし。その先を勉強出来ない訳で。。。
というわけで JavaScript をやったらいいと思うよ。 function つながりってことで
足りないのはラムだ。だっちゃ
じゃあ、僕も PHP について一言いっとくまうす
はじめに
僕は、 PHP なんて大っ嫌いなんだから!って訳じゃないですよ><。
すごくいい言語だと思うし、プログラミングの入り口としては最高じゃないかなって思ってます。
おまけに、環境さえ整ってれば拡張子を html から php に変えるだけで、すぐプログラミングできるしね!
ただ
僕にはもう PHP を始められないたった一つの理由があるんでつ><
なんでって?
だって、
function hoge(e) { : e.addEventListener('fuga', function() { e.piyo(); }, false); : }
とかできない><
クロージャがなかったらこうですか?
function FugaListener(e){ this.e = e; } FugaListener.prototype = { onfuga: function() { this.e.piyo(); } }; function hoge(e) { : e.addEventListener('fuga', new FugaListener(e), false); : }
めめめんどくさすぎる><
処理はもう頭にできてるのに FugaListener と onfuga って名前を考えなきゃいけなかったよ
思考が中断されて泣きそうになったよ><
でも
きっと、僕がめんどくさがり屋だからよくないと思うんだ。
PHP たんは悪くないよ><!
でもさ、みんなもっともっとめんどくさがり屋(怠惰)でもいいような気もするんだ。
それは、僕の傲慢なのかなあ。
ああ、ついついまた、こんなエントリー書いちゃった僕って短気だなあ><自重します。