私は scala を学んでいますが、これは本当にクールな言語だと言わざるを得ません。私はそのパターン マッチング機能と関数リテラルが特に気に入っていますが、私は JavaScript と Ruby のバックグラウンドを持っており、これらの言語で私のお気に入りのパターンの 1 つは、遅延関数とメソッド定義パターンです。JavaScriptでの例は
var foo = function() {
var t = new Date();
foo = function() {
return t;
};
return foo();
};
わずかな調整を加えた同じコードが ruby で機能し、計算の実行後にシングルトン オブジェクトを使用してメソッドを再定義するだけです。この種のことは、高価な計算が含まれていて、結果が必要になるかどうかが事前にわからない場合に非常に便利です。scala では、キャッシュを使用して同じ種類の結果をシミュレートできることを知っていますが、条件付きチェックを回避しようとしており、これまでの実験では否定的な結果が返されました。scala に遅延関数またはメソッド定義パターンがあるかどうかは誰にもわかりませんか?
注: JavaScript コードは Peter Michaux のサイトからのものです。