ホームページ >ウェブフロントエンド >jsチュートリアル >リック・アンド・モーティとクロージャーズ:これらの共通点は何ですか?

リック・アンド・モーティとクロージャーズ:これらの共通点は何ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 06:36:02766ブラウズ

Rick and Morty e Clorsures: o que essas coisas tem em comum?

それで、元気ですか?そうだといい!

私は Leetcode でいくつかのプログラミングの問題を解決しようとしていたのですが、課題の 1 つで、多くの人が理解するのが難しいプログラミングにおける非常に重要な概念に遭遇しました。

そこで私は、JavaScript で クロージャがどのように機能するかを可能な限り最善の方法で説明するためにここに書くことにしました。一緒に来てください!

問題

私は「Counter」と呼ばれる課題に取り組んでいました。そこでは、最初に整数 n を返し、後続の呼び出しごとに前の値よりも 1 単位多い値を返すカウンター関数を作成する必要がありました。例:

  • counter(10) は 10 を返します
  • counter() (再度呼び出された) は 11 を返します
  • counter() (再度呼び出された) は 12 を返します

この問題では、他の関数を返す関数を使用できることなど、いくつかのヒントが得られます。

これは、クロージャの概念です。そこでヒントに従い、このルートに進みました。私が思いついた解決策は次のとおりです:

var createCounter = function (n) {
    let contador = n;
    return function () {
        resultado = contador;
        contador++
        return resultado;
    };
};

このコードは、ローカル変数 (この場合はカウンター) を保存および操作できる別の関数 (クロージャ) を返す createCounter という関数を定義します。

  • カウンターは、createCounter() を呼び出したときに渡される n の値から始まります。
  • 関数を実行するたびに、内部 (戻り) 関数が現在のカウンター値にアクセスし、それを返し、それをインクリメントします。
  • これにより、クロージャーのおかげで、カウンターは中断した場所を「記憶」することができます。

この最後のステップでは、クロージャの真の力を理解します。クロージャとは、関数が外部変数にアクセスでき呼び出し間の状態を維持する別の関数を返すことです。これは、関数内に情報を保存して後でアクセスできる小さな「隠れ」を持っているようなものです。

そして、リックとモーティはこの物語のどこに当てはまるのでしょうか?

『リック・アンド・モーティ』シリーズは、次元間旅行や他の文明を題材にしており、人類の実存に関する多くの疑問を批判し、考察を提案しています。

シリーズをご存じない方のために、簡単な概要を以下に示します。この作品の主人公であるリック・サンチェスは、あらゆる種類のクレイジーなテクノロジーを開発する科学者で、通常は孫のモーティを冒険に連れて行きます。老人の最も有名な発明の 1 つは、現実と次元の間を移動できるようにする次元間ポータルです。詳しくはシリーズを観てみてください(笑)

ニールトン、何を言いたいのですか?

さて、リックがモーティのために特定の次元へのアクセスを可能にする次元間のバックパックを開発したと想像してください。この次元では、リックはいくつかの重要なツールを配置します。モーティはバックパックをどこにでも持ち運べます - 学校に行くときでも、散歩に行くときでも、銀河旅行に行くときでも - リックから離れていても、そこに保存されているすべてのものにアクセスできます。

一番良かった点は?モーティは、使いたいときにバックパックを開けてツールを取り出すことができ、中にあるものを変更することもできます。また、どこに保存されていても、保存されたものにはアクセスできます。

そして、この例はクロージャとどのように接続されているのでしょうか?

  • リックは外部関数で、後でアクセスできるスコープ (ディメンション) と変数 (ツール) を作成します。
  • バックパックを背負ったモーティは、外部関数の変数にアクセスして変更できる 内部関数 を表します。
  • ディメンションは、外部関数の 字句範囲 を表します。つまり、外部関数内で作成され、外部関数の実行後でも内部関数によってアクセスされる変数です。
  • Morty がどこからでもディメンション内の内容にアクセスできるという事実は、スコープの永続性を反映しています。つまり、外側の関数が終了した後でも、内側の関数は元のスコープ内の変数へのアクセスを維持します。

クロージャはプログラミングにおける強力なリソースです。クロージャを使用する主な利点の中で、カプセル化とメモ化に焦点を当てます。値にはクロージャ (内部関数) 経由でのみアクセスできるためカプセル化され、呼び出し間で変数の値を保持できるためメモ化されます。


AI 生成画像: https://designer.microsoft.com/image-creator?scenario=texttoimage

プロンプト: Rick and Morty の Rick が Morty に光る次元ポケット デバイスを手渡している画像を生成します。モーティはポケットから工具やガジェットなどの物体を取り出しており、リックは研究室で何気なくその仕組みを説明しています。ポケットはクロージャーを表しており、リックが立ち去った後でもモーティがアクセスし続けることができる浮遊アイテムが含まれています。


結論

それで、クロージャとは何か、そしてそれがプログラミングにおいてどれほど重要であるか理解できましたか?役に立つものを保管したり、単に別の次元にテレポートしたりするために、モーティのようなバックパックがあればいいのにと思うことがあります (笑)。

コンテンツが気に入ったら、コメントして共有してください!この記事が他の人に役立つと思われる場合は、私に力を与えてください。

また次回お会いしましょう!

以上がリック・アンド・モーティとクロージャーズ:これらの共通点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。