teratail
質問するログイン新規登録

Q&A

解決済

2回答

1032閲覧

クロージャーの原理が分かりません

ruuuu

総合スコア176

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

クロージャ

クロージャは、プログラミング言語における関数オブジェクトの一種です。 引数以外の変数を実行時の環境ではなく、 自身が定義された環境において解決することを特徴とします。

2グッド

2クリップ

投稿2019/12/16 23:09

編集NaN/aN/aN aN:aN

2

2

クロージャーの原理が分らないため、質問させて頂きました。

Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in if error != nil{ print(error as Any) }else{ print("ユーザーの作成が成功しました") } }

分らない原因なのですが、関数は、「引数が入ってから実行される」ものであると理解しています。しかし、上記のAuth.auth().createUser関数はまず、関数の中身が実行されてから、その値が、userそして、errorに入るといったものです。
createUser関数の形はTrailing Closureといったクロージャーであることは理解しているのですが、Trailing Closureは引数の最後の部分を、()の外に出すことでコードの可読性をあげる記述方法であるかと思います。しかし、これは引数の最後の部分を外に出しているだけであり、関数の結果を代入する為の変数ではないと思います。
何故、user, errorcreateUser関数の結果が入るのかが分かりません。
どなたか、教えて頂けましたら幸いです。
よろしくお願いします。

miyabi_pudding, koogawa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答の取得に失敗しました

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問