『クロージャってJavaScriptで出てくる関数内の関数のことでしょ?』。これは100点満点で50点です。
JSが目立つだけで、JS固有の仕様でもなくプログラミングの処理の形態です。
たとえば、PHPにはClosureというクラスが用意されている。
続きを読む『クロージャってJavaScriptで出てくる関数内の関数のことでしょ?』。これは100点満点で50点です。
JSが目立つだけで、JS固有の仕様でもなくプログラミングの処理の形態です。
たとえば、PHPにはClosureというクラスが用意されている。
続きを読むプログラミングをやってると、第一級関数とか第一級オブジェクトというワードにぶつかります。
First-Classの和訳なんですが、決して、航空会社の超ド級美人添乗員にドキドキするところではありません。
言葉に馴染みはなくても、プログラミングをやってれば経験していることです。
続きを読むクラスオブジェクトはシャローコピーなので、プログラムをクラスベース(オブジェクト指向)で作っていると、インスタンスの状況が分かりづらくなります。
それはPHPでも同じ。
インスタンスがどこを見てるかを確認できるのが変数の値を出力する var_dump() です。
続きを読むPHPに限らず、プログラミングのイコール(=)は値の代入、言いかえれば、右辺から左辺へのコピーです。
ただ、クラスのオブジェクトではちがう。コピーですらないので、知らないととんでもない間違いを犯します。
これはPHPでも同じ。オブジェクト指向プログラミング特有の現象。
続きを読むPHPのオブジェクトの代入(=)はシャローコピーなので、厳密にはコピーじゃありません。そこでやらないといけないのがオブジェクトのクローン作成。
PHPではcloneキーワードを付けるだけのように見えるんですが、やることは他にもあります。
そこはやっぱりJavaと似ている。
続きを読むPHPにはリファレンス(参照)というポインタのようなものがあります。クラスオブジェクトにも使えるんですが意味がありません。
クラスオブジェクトの変数代入は参照渡しで、それはリファレンスと同じ動きだから。関数のパラメータでも同じ。
ただリファレンスとオブジェクト代入の内部のしくみは全くの別物。
続きを読む