1 00:00:00,000 --> 00:00:03,332 >> [音楽再生] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ:誰もが、 CS50セミナーへの歓迎、 4 00:00:09,590 --> 00:00:11,690 スウィフトとのiOSアプリ開発。 5 00:00:11,690 --> 00:00:15,690 私はダン・アルメンダリスだ、と私は教師です ここでハーバード大学のコンピュータサイエンスの。 6 00:00:15,690 --> 00:00:21,510 >> そして、次の時間があることを行っています できるだけ多くのものの駆け足 7 00:00:21,510 --> 00:00:25,160 我々が合うことができるように、このトピックに関する。 8 00:00:25,160 --> 00:00:29,170 私は、すべてのソースコードを掲載します あなたは今日、オンラインで参照すること。 9 00:00:29,170 --> 00:00:31,990 我々は、できない可能性があります 実際にすべてのものの上に行きます 10 00:00:31,990 --> 00:00:34,810 私はだとだと この時間であなたを示します。 11 00:00:34,810 --> 00:00:37,580 しかし、少なくとも、うまくいけばを通じて ソースコードのコメント、 12 00:00:37,580 --> 00:00:40,830 あなたは何を把握しようとすることができるでしょう 正確にそれらのもののために何が起こっています 13 00:00:40,830 --> 00:00:42,950 我々は非常に得ることはありません。 14 00:00:42,950 --> 00:00:46,970 >> の全体構造 次のように今日の話になります。 15 00:00:46,970 --> 00:00:52,820 我々はいくつかの基本的なをしてから始めましょう スウィフト言語とシンタックス、 16 00:00:52,820 --> 00:00:56,290 より高度の一部に入ります スウィフト言語の構文。 17 00:00:56,290 --> 00:00:59,560 言語ので、 本当に近代的であり、それ 18 00:00:59,560 --> 00:01:02,110 高レベルのたくさん持っています 機能、私たちが持っていないもの 19 00:01:02,110 --> 00:01:06,600 CS50を通じて、Cで見られますか、 さらにいくつかの他の言語 20 00:01:06,600 --> 00:01:09,310 我々は始めたこと ようなPHP CS50に使用して、 21 00:01:09,310 --> 00:01:12,670 私はしようとする必要がありますするつもりです また、いくつかのトピックを紹介しています 22 00:01:12,670 --> 00:01:18,580 より高いレベルの言語に関連しています あなたはCS50で詳しく表示されない可能性があること、 23 00:01:18,580 --> 00:01:21,380 しかし、あなたは後で表示されます コンピュータサイエンスのクラス。 24 00:01:21,380 --> 00:01:25,290 だから、になるだろう 密集した時間。 25 00:01:25,290 --> 00:01:28,897 そして、私を聞かせすること自由に感じなさい ご質問があれば知っています。 26 00:01:28,897 --> 00:01:30,730 だから、もし興味があるなら 開発をしている中で 27 00:01:30,730 --> 00:01:34,442 スウィフトと、あるいは本当に 任意のiOSアプリの開発、 28 00:01:34,442 --> 00:01:35,900 要件がいくつかあります。 29 00:01:35,900 --> 00:01:39,940 まず第一に、あなたが使用してする必要が マックは、実施例で実行されています 30 00:01:39,940 --> 00:01:43,880 我々が今日使用してしようとしていることを、 OSの比較的新しいバージョン 31 00:01:43,880 --> 00:01:46,580 この場合、Xは、私がX 10.5を実行していますよ。 32 00:01:46,580 --> 00:01:48,600 必要に応じて、10.11を実行することができます。 33 00:01:48,600 --> 00:01:52,430 しかし、あなたがしようとしているすべてのものに Xcodeの7を含む、後で参照され、 34 00:01:52,430 --> 00:01:56,271 これは最新のバージョンを持っています スイフト2.0であるスウィフト、の。 35 00:01:56,271 --> 00:01:58,270 これは実際にはかなりあります 重要な違い。 36 00:01:58,270 --> 00:02:01,510 構文の多くが持っています かなり大幅に変更 37 00:02:01,510 --> 00:02:05,890 スイフト1.0からいくつかのケースでは、 昨年リリースされました、 38 00:02:05,890 --> 00:02:08,514 スイフト2.0に、どの ちょうどこの秋に出てきました。 39 00:02:08,514 --> 00:02:09,889 だから我々はスイフト2.0を表示するつもりです。 40 00:02:09,889 --> 00:02:13,020 そのたくさんの あなたは、オンラインでの検索 41 00:02:13,020 --> 00:02:18,040 あなたは、追加取得しようとしているとき 物事の様々な方法については、 42 00:02:18,040 --> 00:02:20,710 あなたが明示的にしたいこと スイフト2を検索 43 00:02:20,710 --> 00:02:24,950 むしろちょうど昔ながらスウィフトより作ります あなたは構文が正しい得ることを確認してください。 44 00:02:24,950 --> 00:02:26,920 >> 実際には、これは一般的に真です。 45 00:02:26,920 --> 00:02:31,210 開発の迅速な量があります スウィフトの言語で起こっ 46 00:02:31,210 --> 00:02:35,110 Appleはそれをリリースして以来、私は思います それは少し年以上されているもの、 47 00:02:35,110 --> 00:02:36,370 今。 48 00:02:36,370 --> 00:02:39,080 そして、物事が変更されました 劇的当時インチ 49 00:02:39,080 --> 00:02:42,160 それでイライラすることはありません あなたの周りを探しているとき、もし 50 00:02:42,160 --> 00:02:48,310 スウィフトまたはどのように達成するために、上のトピックのための いくつかの例のコードを使用して何か 51 00:02:48,310 --> 00:02:51,210 またはそれにはない何か 実際スウィフト2.0で動作します。 52 00:02:51,210 --> 00:02:53,790 あなたが探していることを確認してください 特にそのバージョンの 53 00:02:53,790 --> 00:02:58,690 異なるの影響を最小限にしようとします バージョンと、物事のこれらの種類。 54 00:02:58,690 --> 00:03:02,470 >> 私はいくつかのことを指摘してみます それは、以前のバージョンとは異なります。 55 00:03:02,470 --> 00:03:03,970 しかし、それはに注意するものです。 56 00:03:03,970 --> 00:03:06,770 それはおそらくになるだろう 最大の頭痛の1 57 00:03:06,770 --> 00:03:11,010 あなたはスウィフトとなります発見されていること だけでも、古いコード例 58 00:03:11,010 --> 00:03:14,050 数ヶ月により、使用しようとします それあなたのより現代的なプロジェクトです。 59 00:03:14,050 --> 00:03:15,430 そして、それは単に動作しません。 60 00:03:15,430 --> 00:03:18,530 あなたは、コンパイラエラーは、次の構文を取得しています エラー、クレイジーなもののすべての種類。 61 00:03:18,530 --> 00:03:21,580 だから患者であります その、あなたがうまくいけば意志 62 00:03:21,580 --> 00:03:24,200 かなりいい経験を持っています スウィフト全体的なと。 63 00:03:24,200 --> 00:03:28,430 >> 今、あなたは実際にjoin--ことができると私は願っています 私たちは実際にはまだこの本year--を持っています 64 00:03:28,430 --> 00:03:30,910 CS 50のAppleのApp 開発チーム、どの 65 00:03:30,910 --> 00:03:34,680 あなたは、任意のアプリをインストールすることができます これは、あなたのiOSデバイス上で作成します。 66 00:03:34,680 --> 00:03:39,190 その場合はこのURLを見てみましょう あなたはそれを行うに興味を持っています。 67 00:03:39,190 --> 00:03:41,450 >> のだからカップル スウィフト自身についての事。 68 00:03:41,450 --> 00:03:43,580 それはコンパイル言語です。 69 00:03:43,580 --> 00:03:45,870 しかし、あなたはそのいくつかが表示されます 我々が使用する機能の 70 00:03:45,870 --> 00:03:50,650 それが少しでも使用されることを可能にします 解釈の方法なども。 71 00:03:50,650 --> 00:03:56,350 >> 構文の多くが借りています Cからそれをベースにしていますし、Cで書かれました 72 00:03:56,350 --> 00:04:00,400 だから我々はそれを見ることができます 持ち帰りがたくさんあり​​ます 73 00:04:00,400 --> 00:04:04,450 既存の知識から Cから私たちはスウィフトへの移植が可能となります。 74 00:04:04,450 --> 00:04:07,290 >> しかし、その事があります Cから、それは非常に異なるように 75 00:04:07,290 --> 00:04:08,860 これは、非常に厳密に型指定されています。 76 00:04:08,860 --> 00:04:10,380 自動メモリ管理があります。 77 00:04:10,380 --> 00:04:13,170 あなたがする必要がありますするつもりはありません malloc関数またはフリーのどこを使用しています。 78 00:04:13,170 --> 00:04:15,110 これは、一般用に設計されています。 79 00:04:15,110 --> 00:04:19,480 換言すれば、あなたはそれを使用することができます アップルウォッチからコンテキストのすべての種類、 80 00:04:19,480 --> 00:04:26,290 iPhoneにすべての方法OS X、およびまで さらにいくつかのサーバー、さらにいくつかのスクリプト。 81 00:04:26,290 --> 00:04:28,400 しかし、我々はそれを参照してくださいよ スクリプトのサポート 82 00:04:28,400 --> 00:04:31,360 まだ全くありません それは他の言語です。 83 00:04:31,360 --> 00:04:34,930 だから、最も可能性の高いあなたが使うことになるでしょう この独占的開発のための 84 00:04:34,930 --> 00:04:37,060 お使いのMacやiPhoneで。 85 00:04:37,060 --> 00:04:40,150 >> そして、それは現代的な機能をたくさん持っています。 86 00:04:40,150 --> 00:04:43,380 そして、これらのものの多くはものであること 我々は、今日に対処しようとしています 87 00:04:43,380 --> 00:04:47,590 しかしまた私達のトピックは、率直に言っています、 我々は全体のコースを捧げることができます。 88 00:04:47,590 --> 00:04:50,140 で実際には、CS 51、 次の学期を提供し、 89 00:04:50,140 --> 00:04:53,990 これらのトピックの多くを焦点を当てて それを以下に説明します。 90 00:04:53,990 --> 00:04:56,781 だから、全体の学期を過ごすことができます これらのことを理解します。 91 00:04:56,781 --> 00:04:58,530 しかし、我々がしようとしています それらを介して取得します 92 00:04:58,530 --> 00:05:00,800 少なくとも十分なあなたこと 何を理解することができます 93 00:05:00,800 --> 00:05:03,700 あなたが見たときに行きます スウィフトプログラムで 94 00:05:03,700 --> 00:05:07,310 そしてあなたの方法をハックすることができます 最終的なプロジェクトのためにそれを通じ。 95 00:05:07,310 --> 00:05:10,780 >> さて、あなたができる最善の方法の1つを これについての追加情報を取得 96 00:05:10,780 --> 00:05:14,700 ただ、Appleのを通じて率直です スウィフトのドキュメントを提供しました。 97 00:05:14,700 --> 00:05:16,930 APIがたくさんあり​​ます それが利用可能です。 98 00:05:16,930 --> 00:05:21,170 そして、これはあなたのために良いホームベースであります あなた、特定のものを検索します 99 00:05:21,170 --> 00:05:23,020 iOSのを伴うAPIでやってみたいです。 100 00:05:23,020 --> 00:05:26,350 あなたがカメラを使用したい場合 たとえば、あなたはここで探し始めることができ、 101 00:05:26,350 --> 00:05:32,540 また、Googleやスタックを使用 通常どおり、オーバーフロー。 102 00:05:32,540 --> 00:05:36,670 >> この上の任意の質問 私たちは右にジャンプする前に? 103 00:05:36,670 --> 00:05:37,880 大丈夫。 104 00:05:37,880 --> 00:05:38,700 のは、上に移動しましょう​​。 105 00:05:38,700 --> 00:05:42,620 >> だから最初、私が持っています 例ファイルの数。 106 00:05:42,620 --> 00:05:46,040 そして、私はステップしようとするつもりです それらを通じて比較的迅速に。 107 00:05:46,040 --> 00:05:49,190 これは、スウィフトのためのHello Worldファイルです。 108 00:05:49,190 --> 00:05:51,050 これは非常に簡単です。 109 00:05:51,050 --> 00:05:54,360 方法より多くのコメントがあります 実際のコードがありますより。 110 00:05:54,360 --> 00:05:57,100 実際のコードがであることに注意してください ライン14上の一番下。 111 00:05:57,100 --> 00:05:57,980 これは、印刷を述べています。 112 00:05:57,980 --> 00:05:59,820 そして、それは関数呼び出しです。 113 00:05:59,820 --> 00:06:03,010 我々はそれに渡しています 文字列は、ハローCS50と呼ばれます。 114 00:06:03,010 --> 00:06:04,750 何のセミコロンがないことに注意してください。 115 00:06:04,750 --> 00:06:07,010 何のint型メインがないことに注意してください。 116 00:06:07,010 --> 00:06:10,392 のどれもありません 我々はCであった嫌なもの 117 00:06:10,392 --> 00:06:15,020 我々は、このようにスウィフトを使用する場合、 単なるテキストフ​​ァイルに記述されています 118 00:06:15,020 --> 00:06:18,340 そして、自分のコンピュータに保存されています 私はそれをコンパイルして実行することができます。 119 00:06:18,340 --> 00:06:20,920 >> 私はここにいることに注意してください CS50 IDEを使用していません。 120 00:06:20,920 --> 00:06:24,460 これは私がことを前提としてい 実行していると私はOS X上でだと、 121 00:06:24,460 --> 00:06:27,870 私はXcodeはすでにインストールされていること このためには、このマシン上で 122 00:06:27,870 --> 00:06:29,080 実際に機能します。 123 00:06:29,080 --> 00:06:33,349 しかし、これは普通のテキストフ​​ァイルです ことを、私たちはその後、コンパイルして編集することができます。 124 00:06:33,349 --> 00:06:34,890 それでは、これは実際にどのように動作するかを見てみましょう。 125 00:06:34,890 --> 00:06:37,430 私はそれをコンパイルしたい場合は? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift。 127 00:06:40,450 --> 00:06:42,960 一瞬または2の後に、それ 我々が今持っていることがわかります 128 00:06:42,960 --> 00:06:45,360 1という名前のファイルにこれをコンパイル。 129 00:06:45,360 --> 00:06:51,090 そして今、我々は我々のCS50を印刷して、 むしろ私たちのHello Worldアプリケーション。 130 00:06:51,090 --> 00:06:54,690 >> 1他の事に注意してください まあ、それはデフォルトであります 131 00:06:54,690 --> 00:07:00,090 我々は、入力する必要はありませんでした 新しい行を印刷する/ nを。 132 00:07:00,090 --> 00:07:05,315 デフォルトでは、印刷機能で スウィフトはあなたのための新しい行を出力します。 133 00:07:05,315 --> 00:07:09,284 オプションの追加を渡すことができます そうしないと、それを伝えるためのパラメータ。 134 00:07:09,284 --> 00:07:10,950 しかし、それについての詳細は、Googleの。 135 00:07:10,950 --> 00:07:13,450 デフォルトでは、印刷行を行います。 136 00:07:13,450 --> 00:07:16,420 >> すべての権利、それではに移りましょう その後、いくつかの他のものに。 137 00:07:16,420 --> 00:07:18,620 では、どのように、実際に変数を定義することができますか? 138 00:07:18,620 --> 00:07:21,960 私たちは、それが使っている行うことができます いずれかの方法。 139 00:07:21,960 --> 00:07:26,122 そして、私はあなたに伝えたいものを 最初は、このLET定義です。 140 00:07:26,122 --> 00:07:27,830 そして、これは重要です 効果的理由 141 00:07:27,830 --> 00:07:30,240 私たちがやっていることは定数を定義します。 142 00:07:30,240 --> 00:07:34,010 私たちは、変数を作成しようとしています、 か名前と呼ばれる定数、 143 00:07:34,010 --> 00:07:38,200 いくつかのdata--でそれを提供 この場合、文字列ダン。 144 00:07:38,200 --> 00:07:40,630 しかし、このLETを使用して、 キーワード、我々が言っています 145 00:07:40,630 --> 00:07:43,860 これはvariable--ことか 再び呼び出さconstant-- 146 00:07:43,860 --> 00:07:46,220 名前が変更されようとされることはありません。 147 00:07:46,220 --> 00:07:50,120 それは全体で不変になるだろう このプログラムの期間 148 00:07:50,120 --> 00:07:53,100 または全体で コンテキストの期間 149 00:07:53,100 --> 00:07:55,390 その変数が使用可能であること。 150 00:07:55,390 --> 00:08:00,096 >> これは、ときに非常に重要です あなたがされていないいくつかのデータを持っています 151 00:08:00,096 --> 00:08:02,970 あなたのプログラムに変更するつもり、 あなたは例のさまざまなが表示されます 152 00:08:02,970 --> 00:08:06,790 私たちが使用したい場合について 他の構文対させ、 153 00:08:06,790 --> 00:08:11,040 あなたが聞かせ使用することをそれが重要です 可能な限り、この通知のため 154 00:08:11,040 --> 00:08:13,740 それは言語 変更するつもりはありません、 155 00:08:13,740 --> 00:08:16,590 そして、それは実際に実行することができます 最適化の多く 156 00:08:16,590 --> 00:08:19,560 速度を向上させることと プログラムの安全性。 157 00:08:19,560 --> 00:08:24,480 そして、安全性によって、私はさせない意味します 狂気のエラーが発生したことのクラッシュ 158 00:08:24,480 --> 00:08:27,910 我々は可能性があること Cで見に慣れています 159 00:08:27,910 --> 00:08:32,460 >> その後、我々は、文字列の補間を使用することができます 文字列の中で、これをカプセル化します。 160 00:08:32,460 --> 00:08:35,200 だから我々はこの中で見ることができます 印刷行、こんにちは印刷、 161 00:08:35,200 --> 00:08:38,950 して、バックスラッシュオープン括弧を使用して、 そしてその後、私の変数の名前、 162 00:08:38,950 --> 00:08:41,809 この場合は定数で、 括弧を閉じます。 163 00:08:41,809 --> 00:08:46,400 私は基本的にそれから入れています 名前と呼ばれるこの変数の内容 164 00:08:46,400 --> 00:08:50,240 文字列の内側にして、 そこに結果を印刷します。 165 00:08:50,240 --> 00:08:54,070 >> このファイルを一つの他の変更があります これは非常に上部に、私が持っているということです、 166 00:08:54,070 --> 00:08:57,340 これは、シバン行に入れ 基本的には指定 167 00:08:57,340 --> 00:09:00,180 私が使用すること スウィフト通訳、これ 168 00:09:00,180 --> 00:09:04,190 私はもはやに持っていないことを意味 この特定のプログラムをコンパイルします。 169 00:09:04,190 --> 00:09:06,567 私は、独自のスクリプトのようにそれを実行することができます。 170 00:09:06,567 --> 00:09:09,400 しかし、これは後ろに、この場合には、 シーンは、コンパイルして、されています 171 00:09:09,400 --> 00:09:10,030 実行中。 172 00:09:10,030 --> 00:09:13,540 それは、私たちには見えないだけです。 173 00:09:13,540 --> 00:09:15,880 >> すべての権利、それではに移りましょう。 174 00:09:15,880 --> 00:09:19,650 だから、詐欺のビットがあります その直前に起こりました。 175 00:09:19,650 --> 00:09:23,230 私は私があることを示しました 定数を定義することができます。 176 00:09:23,230 --> 00:09:25,490 そして、私はそれを行うにはいくつかのデータを提供することができます。 177 00:09:25,490 --> 00:09:29,240 しかし、この場合には、私はしなかったことに気づきます 実際にデータの型を指定します 178 00:09:29,240 --> 00:09:29,820 それはです。 179 00:09:29,820 --> 00:09:32,780 ので、それはです コンパイラ、スウィフトことができます 180 00:09:32,780 --> 00:09:36,910 ちょうどベースのデータの型を推論 私はそれに入れたデータに。 181 00:09:36,910 --> 00:09:41,760 それはこれを評価してそれを知っているので 変数右ここで、このデータ権利 182 00:09:41,760 --> 00:09:43,370 ここで、それが文字列であることを知っています。 183 00:09:43,370 --> 00:09:48,690 ので、この定数名は、したがって、あります 同様に、文字列になるだろう。 184 00:09:48,690 --> 00:09:52,730 >> しかし、我々はまた、明示的にすることができます 型について 185 00:09:52,730 --> 00:09:55,790 我々はのために使用しようとしています 定数または変数 186 00:09:55,790 --> 00:10:01,590 この構文を使用してinstead-- 名前のコロン文字列に等しいしましょう 187 00:10:01,590 --> 00:10:05,530 このケースでは、我々がいることを意味ダン、 名前と呼ばれる定数を定義しようとして。 188 00:10:05,530 --> 00:10:07,150 これは、String型になるだろう。 189 00:10:07,150 --> 00:10:10,550 そして、値がダンになるだろう。 190 00:10:10,550 --> 00:10:12,550 今、他の方法でその 我々はvariables--を作成することができます 191 00:10:12,550 --> 00:10:15,549 これらは、どの可変変数です 我々があることを、実際に行くことを意味 192 00:10:15,549 --> 00:10:19,670 いつかその内容を変更するには コンテキストの期間中 193 00:10:19,670 --> 00:10:23,890 その変数は、私たちをdefined--されていること varキーワードを使用する代わりにしてみましょう。 194 00:10:23,890 --> 00:10:27,400 しかし、再び、デフォルトでは、あなたが知っている限り あなたがそのデータを操作する必要があること、 195 00:10:27,400 --> 00:10:30,510 以下のために使用しようとしてみましょう パフォーマンスの向上。 196 00:10:30,510 --> 00:10:33,740 >> この場合、私は、することができます データの型を指定します 197 00:10:33,740 --> 00:10:37,650 我々は内であることを期待しています ラベルと呼ばれるこの新しい変数。 198 00:10:37,650 --> 00:10:38,800 それは文字列になるだろう。 199 00:10:38,800 --> 00:10:43,030 そして、私たちはその後、連結しようとしています 2つの文字列、文字列こんにちは、 200 00:10:43,030 --> 00:10:48,070 文字列は、によって表されます 変数、またはむしろ定数名。 201 00:10:48,070 --> 00:10:50,660 >> だから、これは、このためにいいです 多少、我々のようにPHPされます 202 00:10:50,660 --> 00:10:52,250 非常に簡単な文字列の連結を持っています。 203 00:10:52,250 --> 00:10:56,350 私たちは、自動的にする必要はありません メモリ管理の任意の並べ替えを使用 204 00:10:56,350 --> 00:11:00,580 サイズを大きくし、実行します そこに変なものの任意の並べ替え。 205 00:11:00,580 --> 00:11:05,040 私たちが実際に期待するように、これは動作します。 206 00:11:05,040 --> 00:11:09,370 >> すべての権利、この上の任意の質問? 207 00:11:09,370 --> 00:11:12,520 >> 今、他の理由は 私たちは、あなたが能力を持っている必要があります 208 00:11:12,520 --> 00:11:15,490 何を定義することができるように、 データ変数の型があります 209 00:11:15,490 --> 00:11:18,170 時には我々がいないからです 変数を初期化したいです 210 00:11:18,170 --> 00:11:21,080 でいくつかのデータを持ちます 定義のポイント。 211 00:11:21,080 --> 00:11:23,500 したがって、この場合には、のは言わせて 私は入力を開始したいこと 212 00:11:23,500 --> 00:11:25,040 グレードブックにいくつかのグレード。 213 00:11:25,040 --> 00:11:27,530 さて、私は知っているのいずれかのこと 私はなりたい変数 214 00:11:27,530 --> 00:11:30,280 変更可能な等級になるだろう。 215 00:11:30,280 --> 00:11:33,010 そして、我々はまた、私たちを知っています それは整数になりたいです。 216 00:11:33,010 --> 00:11:36,030 しかし、おそらく我々はまだありません そのグレードを用意して。 217 00:11:36,030 --> 00:11:39,570 >> スウィフトでは、あなたがする必要はあり データのタイプを定義します 218 00:11:39,570 --> 00:11:44,000 それが関連付けられています 変数または定数ましょう 219 00:11:44,000 --> 00:11:47,840 あなたが実際にできるようにするには その変数を使用します。 220 00:11:47,840 --> 00:11:51,170 それが厳密に型指定されているので、 あなたはタイプを関連付けする必要があります 221 00:11:51,170 --> 00:11:52,890 これらの変数を持ちます。 222 00:11:52,890 --> 00:11:56,120 >> この場合はそう、私は正しくないしている場合 いくつかの値を持つ最初の初期化、 223 00:11:56,120 --> 00:12:00,520 私はスウィフトを伝えるために必要なもの 私は、データ型があることを期待しています。 224 00:12:00,520 --> 00:12:02,650 そして、それが残っているために起こっています 同じデータタイプ 225 00:12:02,650 --> 00:12:05,780 このプログラムの歴史を通して。 226 00:12:05,780 --> 00:12:10,050 >> 今、あなたはできるだけ早くたくなるかもしれません 私は、このグレードの変数を作成しました 227 00:12:10,050 --> 00:12:13,530 それ提供 100の整数であり、今私の場合 228 00:12:13,530 --> 00:12:18,540 連結してみたいです その整数の文字列、 229 00:12:18,540 --> 00:12:21,610 まだ使用するたくなるかもしれません その文字列連結演算子 230 00:12:21,610 --> 00:12:24,500 以下のような私たちは、わずか数行の前にいました。 231 00:12:24,500 --> 00:12:26,460 しかし残念ながら、 これは実際にはしません 232 00:12:26,460 --> 00:12:29,270 仕事、あなたがしているので、 基本的に実行します 233 00:12:29,270 --> 00:12:32,380 二つの異なるタイプの操作。 234 00:12:32,380 --> 00:12:36,856 >> さて、これは他とは大きく異なります 実際にあるPHPなどの言語 235 00:12:36,856 --> 00:12:38,480 種類の彼らの一種でlooseyガチョウ。 236 00:12:38,480 --> 00:12:40,030 彼らはただ、ええ、似ています 何でも、私は気にしないでください。 237 00:12:40,030 --> 00:12:42,710 ちょうど私一種類を与え、 多分私は正しいことを行うだろう。 238 00:12:42,710 --> 00:12:46,060 >> この場合、スウィフトは、 タイプについて非常に厳しいです 239 00:12:46,060 --> 00:12:47,350 あなたが扱っていること。 240 00:12:47,350 --> 00:12:50,700 この加算演算子 または連結演算子 241 00:12:50,700 --> 00:12:54,400 基本的にのカップルを持っています 別の可能なオプション。 242 00:12:54,400 --> 00:12:56,970 あなたは、加算を行うことができます 整数、またはあなたと 243 00:12:56,970 --> 00:13:00,870 文字列の連結を行うことができますし、 おそらくいくつかの他のものと同様。 244 00:13:00,870 --> 00:13:05,550 しかし、オペレータが認識しない場合 それの両側に何ですが、 245 00:13:05,550 --> 00:13:10,452 またはそれらの組み合わせではなく 二つのタイプは、それを期待しているものではなく、 246 00:13:10,452 --> 00:13:11,910 それは故障の原因になるだろう。 247 00:13:11,910 --> 00:13:16,690 >> したがって、この場合には、何を意味し 文字列プラスの整数を持っていますか? 248 00:13:16,690 --> 00:13:18,880 まあとの関連で これは、我々はおそらくしたいです 249 00:13:18,880 --> 00:13:21,990 文字列の連結操作をすることができません。 250 00:13:21,990 --> 00:13:26,420 しかし、もちろんコンピュータ コンテキストの並べ替えを持っていません。 251 00:13:26,420 --> 00:13:29,950 そして、私たちは提供する必要があります その追加情報 252 00:13:29,950 --> 00:13:32,390 それはそれは何を知っているように 私たちがやりたいということです。 253 00:13:32,390 --> 00:13:36,860 >> 換言すれば、実際 スウィフトは強く型付けされていること 254 00:13:36,860 --> 00:13:39,520 あなたがしなければならないことを意味 追加作業を少し 255 00:13:39,520 --> 00:13:42,100 それが動作するように取得します あなたが望む方法。 256 00:13:42,100 --> 00:13:43,710 しかし、結果として、それが安全です。 257 00:13:43,710 --> 00:13:46,290 そして、あなたが持っている一度取ります これらのタイプを考慮に入れ、 258 00:13:46,290 --> 00:13:49,300 物事はちょうど率直開始します かなりうまく動作するように。 259 00:13:49,300 --> 00:13:52,520 >> したがって、このケースでは、次に希望 文字列の連結を行います 260 00:13:52,520 --> 00:13:56,040 明示的にキャストすることにより 文字列の整数 261 00:13:56,040 --> 00:13:58,490 このでそれをラップすることにより、 資本S String関数、 262 00:13:58,490 --> 00:14:03,510 して、文字列連結を使用して、 オペレータは、私たちのラベル変数を変更します 263 00:14:03,510 --> 00:14:06,280 し、それをプリントアウト。 264 00:14:06,280 --> 00:14:08,420 >> ここまでは順調ですね? 265 00:14:08,420 --> 00:14:12,020 すべての権利、のがに移りましょう。 266 00:14:12,020 --> 00:14:16,300 >> 今様々なデータがあります 我々はスイフトで使用できるタイプ。 267 00:14:16,300 --> 00:14:21,620 あなたがに慣れてきたように、 我々は、変更可能な配列を作成することができます。 268 00:14:21,620 --> 00:14:26,140 そして、その配列ができるだけで シングルタイプが含まれています。 269 00:14:26,140 --> 00:14:30,360 >> したがって、この場合には、我々が作成しようとしています 整数の可変配列、どの 270 00:14:30,360 --> 00:14:34,800 我々は成績を呼び出します、我々はできるようになります この角括弧でそれを保存します 271 00:14:34,800 --> 00:14:38,650 あなたが慣れてきたようなフォーマット 他の言語の様々なへ。 272 00:14:38,650 --> 00:14:41,150 しかし、ここで私たちがしていることに気付きます 物事のカップルを定義します。 273 00:14:41,150 --> 00:14:45,350 グレード変更可能variable--です 我々はletキーワードを使用しません。 274 00:14:45,350 --> 00:14:49,620 だから、私たちは、その後変更できることを意味します この配列の内容。 275 00:14:49,620 --> 00:14:53,420 これは、Array型intのあります 私たちはそれを伝えることができます 276 00:14:53,420 --> 00:14:56,260 ここではこれらの角括弧に基づきます。 277 00:14:56,260 --> 00:14:58,930 >> すてきなものの今1 このことについて、我々は、 278 00:14:58,930 --> 00:15:02,310 多くのへのアクセス権を持っています 追加情報 279 00:15:02,310 --> 00:15:07,110 ちょうど使用して、配列について いくつかの単純なドット表記。 280 00:15:07,110 --> 00:15:10,500 ですから、例えば、 grades.countは、私たちに提供して 281 00:15:10,500 --> 00:15:14,820 その中に存在するアイテムの数 私たちはその後、かなりアクセスできる配列、 282 00:15:14,820 --> 00:15:19,090 簡単に、単純にそのドット表記を使用して。 283 00:15:19,090 --> 00:15:21,830 >> 追加の追加したい場合 この配列の項目、 284 00:15:21,830 --> 00:15:27,220 あなたは、PHPのスタイルを行うことはできません あなただけ明示的に定義する場合は、 285 00:15:27,220 --> 00:15:30,910 指定されたインデックスにある、いくつかの値 あなたが挿入すること。 286 00:15:30,910 --> 00:15:37,210 代わりに、追加を使用 配列型のメソッド 287 00:15:37,210 --> 00:15:40,920 このリストに、その項目、95を追加します。 288 00:15:40,920 --> 00:15:45,990 >> だから今、この配列には、以下があります 100、0、90、85 contents--。 289 00:15:45,990 --> 00:15:49,270 そして今、我々は、添付しました それに95にも。 290 00:15:49,270 --> 00:15:51,830 >> 他の方法があります 我々は物事を追加することができます。 291 00:15:51,830 --> 00:15:55,030 あなたが実際に使用することができます 合計演算子、 292 00:15:55,030 --> 00:15:59,200 解釈されます 配列操作を追加します。 293 00:15:59,200 --> 00:16:04,680 そして、あなたはその後、別のものを追加することができます その内容は70と80であり、配列、 294 00:16:04,680 --> 00:16:05,560 その配列へ。 295 00:16:05,560 --> 00:16:08,250 だから今、私たちは持っています この変数内のコンテンツ 296 00:16:08,250 --> 00:16:17,220 100、0、90、85、95、70、及び80をgrades--。 297 00:16:17,220 --> 00:16:21,850 これはただのちょっといい構文的です スウィフトは、私たちに提供して砂糖。 298 00:16:21,850 --> 00:16:23,850 >> だから我々は、合計したい場合 グレードは、我々は、おそらくです 299 00:16:23,850 --> 00:16:27,340 反復するためにするつもり このループ内のすべての項目を超えます。 300 00:16:27,340 --> 00:16:32,150 そして、我々は、スウィフトに、概念を持っています あなたが期待するように、ループのための。 301 00:16:32,150 --> 00:16:35,350 しかし、我々は示している方法 範囲は若干異なります。 302 00:16:35,350 --> 00:16:37,790 したがって、この場合には、へ すべてを合計し、我々はよ 303 00:16:37,790 --> 00:16:40,650 一時的に作成するつもり 私たちのために順番に和と呼ばれる変数 304 00:16:40,650 --> 00:16:42,580 このカウントを維持します。 305 00:16:42,580 --> 00:16:44,430 >> そして、私たちのために気付きます ここでループ構成。 306 00:16:44,430 --> 00:16:46,820 0のインデックスのために.. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 したがって、この構成により、0 .. 00:17:01,860 我々が作成しようとしているという 0から最大の整数の範囲 310 00:17:01,860 --> 00:17:05,750 しかしgrades.countを除きます。 311 00:17:05,750 --> 00:17:09,577 これは、0、1、2、3、4となり 5、アップしかし多くの1まで 312 00:17:09,577 --> 00:17:10,410 grades.count前。 313 00:17:10,410 --> 00:17:14,160 >> だから、これはどのように我々は異なっています ループに一般的に使用されるだろう 314 00:17:14,160 --> 00:17:18,569 あなたは、いくつかのインデックスを持っているでしょうどこ 変数、最初は0に等しく、それを設定し、 315 00:17:18,569 --> 00:17:25,480 して、いくつかのことまでを統合 アイテムの数よりも小さい値 316 00:17:25,480 --> 00:17:27,140 その配列インチ 317 00:17:27,140 --> 00:17:29,820 >> だから、変更があります これに対して、実際に、 318 00:17:29,820 --> 00:17:35,010 これは私たちは非常に簡単にできるようになります 範囲の種類を設定します。 319 00:17:35,010 --> 00:17:40,570 あなたはこの範囲を変更する場合 3つのドット、0 ... grade.count、 320 00:17:40,570 --> 00:17:45,120 これは、範囲を示し0 包括grades.countします、 321 00:17:45,120 --> 00:17:49,260 その数でもあることを意味 その範囲に含まれます。 322 00:17:49,260 --> 00:17:52,110 >> しかし、これは非常に便利です これらの正確なもののために、 323 00:17:52,110 --> 00:17:54,590 我々は実行する必要がある場合 ループオーバーの繰り返し 324 00:17:54,590 --> 00:17:59,630 これらのインデックスはゼロがインデックス化されているため、 我々は他の言語で見てきたように 325 00:17:59,630 --> 00:18:02,360 同様に。 326 00:18:02,360 --> 00:18:05,210 このforループ上の任意の質問? 327 00:18:05,210 --> 00:18:10,660 >> だから、暗黙的な定義があります このインデックス変数の、 328 00:18:10,660 --> 00:18:14,350 その値は0から始まり、 すべてのループの繰り返しで継続 329 00:18:14,350 --> 00:18:17,950 ポイントまで1ずつ増加します それはgrades.countに等しく、 330 00:18:17,950 --> 00:18:20,380 その時点で、ループが中断されます。 331 00:18:20,380 --> 00:18:23,730 >> 私たちの文字列内のことに注意してください ここで補間、 332 00:18:23,730 --> 00:18:26,910 私たちは、実際にいくつかの簡単なを行うことができます これらの値を操作。 333 00:18:26,910 --> 00:18:31,230 だから、インデックスに1を加えたが、実際になります その値の加算を行います 334 00:18:31,230 --> 00:18:34,780 インデックスがであるため この場合、整数。 335 00:18:34,780 --> 00:18:37,810 その時点で、それは、意志 その後、文字列に変換します 336 00:18:37,810 --> 00:18:42,230 そして、、ここで、この文字列に補間 私たちは期待通りにプリントアウト。 。 337 00:18:42,230 --> 00:18:44,520 >> そして素晴らしい事 配列についてはこちらです 338 00:18:44,520 --> 00:18:50,730 我々はまた、持ってできること フェッチ値と設定値 339 00:18:50,730 --> 00:18:54,080 角括弧表記を使用して 我々は、他の言語で見てきました。 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> すべての権利、ここから、私たちは今では 私たちの学年のすべての私たちの合計を計算します。 342 00:19:01,030 --> 00:19:02,780 次の今の並べ替え 論理的なステップは次のようになります 343 00:19:02,780 --> 00:19:07,580 見つけるために除算演算を行うには これらのグレードの平均アウト。 344 00:19:07,580 --> 00:19:10,150 しかし、重要な何か ここで起こっています 345 00:19:10,150 --> 00:19:15,020 この合計は、おそらく整数であるということです。 346 00:19:15,020 --> 00:19:18,020 しかし、我々はいくつかを実行する必要があります ダブル分裂の一種。 347 00:19:18,020 --> 00:19:20,600 そして、これはあることを行っています ときに非常に重要 348 00:19:20,600 --> 00:19:24,140 我々は、この操作を実行します、 私たちが言っているので、 349 00:19:24,140 --> 00:19:28,430 私たちが実際に必要だということです 2ダブルスで除算を実行。 350 00:19:28,430 --> 00:19:31,370 そして再び、スウィフト理由 非常に強く型付けされ、 351 00:19:31,370 --> 00:19:36,760 我々は、明示的にすべてを設定する必要があります 実際に私たちの前にダブルスのアイテム 352 00:19:36,760 --> 00:19:38,300 その操作を実行します。 353 00:19:38,300 --> 00:19:40,550 >> ために私たちのためにそう 二重除算を実行、 354 00:19:40,550 --> 00:19:43,730 それはちょうど1のために十分ではありません これらの項目の2倍にします。 355 00:19:43,730 --> 00:19:46,400 それらの両方があることを持っています 迅速ためには二重 356 00:19:46,400 --> 00:19:50,860 このことを確認します 私たちが何をしたいです。 357 00:19:50,860 --> 00:19:54,360 だから私たちはその後、明示的に型キャストします 我々は上で計算しました和 358 00:19:54,360 --> 00:19:58,970 そして、ダブルスの等級の数、 その操作とストアを実行します 359 00:19:58,970 --> 00:20:02,390 、この新しい変数に、というか 平均と呼ばれるこの新しい定数、 360 00:20:02,390 --> 00:20:06,810 どのようなタイプ、あなたが想像しているのだろうか? 361 00:20:06,810 --> 00:20:07,587 ダブル、ええ。 362 00:20:07,587 --> 00:20:09,420 この場合そこで、 それを指定する必要はありません 363 00:20:09,420 --> 00:20:13,450 それから推測することができるため データ平均の動作がどのようなタイプ 364 00:20:13,450 --> 00:20:14,730 なります。 365 00:20:14,730 --> 00:20:19,025 そして、スウィフトは、一般的にかなり良いです 種類を推測することができます。 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> あなたはこれを見たいと思ってください 実行するか、または私が上に移動することができますか? 368 00:20:24,200 --> 00:20:25,640 私が行く維持したいです。 369 00:20:25,640 --> 00:20:28,130 このいずれかの上の任意の質問? 370 00:20:28,130 --> 00:20:28,630 グレート。 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> 今、私たちは、に到達するために開始するつもりです 関数を定義する良いですstuff--、 373 00:20:35,010 --> 00:20:39,090 そして、されている他の種類のカップル あなたが持っていないスウィフトに固有 374 00:20:39,090 --> 00:20:41,620 他の言語で見られます この時点までは、 375 00:20:41,620 --> 00:20:46,290 しかし、彼らは他に存在しています あなたが後で見つけるかもしれない言語。 376 00:20:46,290 --> 00:20:48,210 だから、最初のあなたがしたい場合 関数を定義するために、 377 00:20:48,210 --> 00:20:52,170 あなたがファンキーな言葉でそれを定義します 機能、及び、関数名 378 00:20:52,170 --> 00:20:56,710 して、括弧で、引数 あなたはその関数が受け入れるようにしたいもの。 379 00:20:56,710 --> 00:21:00,280 引数もしなければなりません specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 また、そのデータの型を指定する必要があります 彼らは推測することができない限り、彼らは、あります。 381 00:21:05,010 --> 00:21:07,500 そして、我々はその少しが表示されます ほんの少しで警告。 382 00:21:07,500 --> 00:21:09,920 >> したがって、この場合、我々は printGradeCount、呼び出される関数です。 383 00:21:09,920 --> 00:21:12,840 我々は受け入れるつもりです variable--というか、この場合には、 384 00:21:12,840 --> 00:21:14,450 評定表と呼ばconstant--。 385 00:21:14,450 --> 00:21:18,517 そして、それはであることを行っています 整数の配列を入力します。 386 00:21:18,517 --> 00:21:20,600 今何かがあります それは、ここで本当に重要です 387 00:21:20,600 --> 00:21:21,849 ことを私はあなたが理解したいです。 388 00:21:21,849 --> 00:21:27,560 これは、デフォルトでは、これらの引数であります この関数への入力されていること 389 00:21:27,560 --> 00:21:34,380 暗黙的なletキーワードで定義され、 これは、私はこれを変更できないことを意味します 390 00:21:34,380 --> 00:21:39,850 ここで評定表変数。 391 00:21:39,850 --> 00:21:43,360 そして、その種の、理にかなっています あなたがデータを渡しているからです。 392 00:21:43,360 --> 00:21:45,860 そして、あなたはおそらくそれをしたくありません あなたの下から変更します。 393 00:21:45,860 --> 00:21:50,800 これは、明示的に言及することが可能です これは、変数が入れてあること 394 00:21:50,800 --> 00:21:52,070 ここでvarキーワード。 395 00:21:52,070 --> 00:21:56,832 しかし、それは私たちがきた落とし穴があります 気づいた人は、過去に行っています 396 00:21:56,832 --> 00:21:59,790 彼らはそれが起こっていることを想定していることです 可変にすると、実際には、それ 397 00:21:59,790 --> 00:22:02,640 定数です。 398 00:22:02,640 --> 00:22:07,340 >> すべての権利なので、ここでは、その後、この場合には、 我々はすべての戻り値の型を指定していません。 399 00:22:07,340 --> 00:22:09,460 私たちは何をする方法を紹介 一瞬でその。 400 00:22:09,460 --> 00:22:12,340 しかし、ここで私たちが持っていることに気づきます 条件であれば、単純な。 401 00:22:12,340 --> 00:22:14,560 評定表がある場合 空、これはこのケースで 402 00:22:14,560 --> 00:22:19,310 この整数のちょうど性質であります 配列は、その後、我々は何かをプリントアウト。 403 00:22:19,310 --> 00:22:23,100 そうでなければ、私たちは何かを行います。 404 00:22:23,100 --> 00:22:25,000 >> 非常に単純ではこれまでのところ、私は思います。 405 00:22:25,000 --> 00:22:27,960 ご質問があればしかし、私を停止。 406 00:22:27,960 --> 00:22:33,350 >> 今、この関数は、平均は、またかかります いくつかの引数、あるいはむしろ一つの引数、 407 00:22:33,350 --> 00:22:37,507 これ評定表であり、この時間 double型を返すために起こっています。 408 00:22:37,507 --> 00:22:39,340 それが計算されているので 平均それはです 409 00:22:39,340 --> 00:22:45,010 実際にそれを返しに行きます 呼び出し側の行に計算された平均。 410 00:22:45,010 --> 00:22:50,070 >> ここでは、指定します 矢印の後に型を返します。 411 00:22:50,070 --> 00:22:53,260 そして、これは感じるかもしれません 最初は奇妙なの一種。 412 00:22:53,260 --> 00:22:55,610 あなたは慣れて成長しました リターンを設定します 413 00:22:55,610 --> 00:22:57,720 関数名の前に入力します。 414 00:22:57,720 --> 00:23:00,310 しかし、あなたは、この考える場合 数学の面で、 415 00:23:00,310 --> 00:23:03,320 あなたは数学を持っているときのような それは、関数を定義し、 416 00:23:03,320 --> 00:23:06,807 あなたには、いくつかの関数を持っています 入力は、それが出力を生成します。 417 00:23:06,807 --> 00:23:08,890 そして、それは正確に何です これは模倣することになっています。 418 00:23:08,890 --> 00:23:12,460 そして、他の言語のカップルがあります それは同様に同様の構文を持っています、 419 00:23:12,460 --> 00:23:15,674 おそらくどれもその あなたはCS50で見てきました。 420 00:23:15,674 --> 00:23:17,090 しかし、まだそれに惑わされてはいけません。 421 00:23:17,090 --> 00:23:21,650 矢印が起こっていることを意味し この場合に返されます。 422 00:23:21,650 --> 00:23:23,650 [OK]を、ので、どのように我々が行っています この平均を計算するには? 423 00:23:23,650 --> 00:23:25,649 まあ、もし評定表 空で、よくして、私たちはしています 424 00:23:25,649 --> 00:23:30,731 これは多分、0を返しに行きます これを治療するために合理的な方法。 425 00:23:30,731 --> 00:23:32,980 私はのが来るように、知りません バック少しのそれに。 426 00:23:32,980 --> 00:23:34,688 これは実際にはないかもしれません 合理的な方法であります 427 00:23:34,688 --> 00:23:38,310 場合、平均を計算します 私たちは、空の評定表を持っています。 428 00:23:38,310 --> 00:23:41,260 >> そして、私達はちょうど私たちの合計を実行します。 429 00:23:41,260 --> 00:23:43,900 私たちは実際にここに注意してください の代替バージョンを持っています 430 00:23:43,900 --> 00:23:49,190 私たちが次々に取得することができ、ループのための 配列内のすべての単一の項目の上に 431 00:23:49,190 --> 00:23:53,630 各要素を配置 独自の変数に。 432 00:23:53,630 --> 00:23:56,200 にグレードのために指定することにより 評定表、我々は何を言っています 433 00:23:56,200 --> 00:24:00,560 我々は暗黙のうちに行っているということです 呼ばれる新しい定数を作成します 434 00:24:00,560 --> 00:24:05,180 表現するために起こっているグレード 評定表内のすべてのユニークなアイテム 435 00:24:05,180 --> 00:24:06,769 毎回、ループを反復処理のため。 436 00:24:06,769 --> 00:24:08,560 初めてだから それは、グレードの意志を実行しています 437 00:24:08,560 --> 00:24:09,800 評定表の最初の項目で。 438 00:24:09,800 --> 00:24:12,300 二回目は、それができるでしょう 第二の項目、というようになど 439 00:24:12,300 --> 00:24:15,970 評定表を持ってまで、 要素それ自体を使い果たし。 440 00:24:15,970 --> 00:24:20,390 その後、我々はそれを合計することができるようになります 私たちの総和変数にグレード 441 00:24:20,390 --> 00:24:22,570 私たちの平均を返します 我々は前に見てきたように。 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 [OK]を、任意の質問? 444 00:24:26,950 --> 00:24:27,699 はい? 445 00:24:27,699 --> 00:24:28,990 聴衆:私は2つの質問があります。 446 00:24:28,990 --> 00:24:33,586 ナンバーワン、仮に、することができます あなたはこの1に整数を実行しますか? 447 00:24:33,586 --> 00:24:35,604 である必要はありません ダブル、それが正しいのですか? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ:することができます その質問を繰り返しますか? 449 00:24:37,520 --> 00:24:39,587 聴衆:私は行うことができます 平均値として整数? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ:することができます 平均として、整数のですか? 451 00:24:41,670 --> 00:24:45,015 だから、整数を返します 代わりに、二重の平均? 452 00:24:45,015 --> 00:24:48,204 >> 聴衆:あなたをReturn-- 今、以下のことを持っています。 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ:右ここで、0.0を返しますか? 454 00:24:49,870 --> 00:24:51,790 観客は:ええ、ちょうど0を返します。 455 00:24:51,790 --> 00:24:56,590 だから、どちらかになります 80または85ではなく、85.2。 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ:だからその場合には、 そうカップルの異なる方法があります 457 00:24:59,465 --> 00:25:00,090 それに答えるために。 458 00:25:00,090 --> 00:25:02,760 私は順番に答えてみましょう。 459 00:25:02,760 --> 00:25:06,740 だから私はちょうどこのリターンを行った場合 0,0は、整数値です。 460 00:25:06,740 --> 00:25:09,730 そして、そのためには、原因となります この場合のタイプのエラー 461 00:25:09,730 --> 00:25:13,210 それは二重に期待しているので、 しかし、整数を返しています。 462 00:25:13,210 --> 00:25:16,770 私は整数を返すようにしたい場合は、私がすることができます。 463 00:25:16,770 --> 00:25:20,450 私は、戻り値の型を設定することができます 、int型ここでは0を返すために、 464 00:25:20,450 --> 00:25:22,047 ダブル除算を実行しません。 465 00:25:22,047 --> 00:25:23,880 しかし、その後、私たちは次のようになります 整数の除算を行います。 466 00:25:23,880 --> 00:25:27,080 そして、私たちはその後、得られないだろう 我々は、おそらく期待していることを平均。 467 00:25:27,080 --> 00:25:29,210 しかし、はい、私たちは変更することができます その方法でタイプ。 468 00:25:29,210 --> 00:25:32,598 >> 聴衆:そして第二に、あなたは 上に1ダブルを持っています。 469 00:25:32,598 --> 00:25:35,502 しかし、下方に、ときに ダブルダブルを返却します、 470 00:25:35,502 --> 00:25:38,280 それは自動的にすでにです ダブルフォーマットを返します。 471 00:25:38,280 --> 00:25:42,278 なぜあなたはまだそれを定義する必要があります ダブルと上部の矢印の付きましたか? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ:だから 場合には、これが一部であります 473 00:25:45,010 --> 00:25:50,580 のthe--ので、質問を繰り返します それはリターンからの暗黙のだから 474 00:25:50,580 --> 00:25:56,030 ここでは種類、実際にどのようなタイプの本 で、我々はスウィフトと明示する必要があります 475 00:25:56,030 --> 00:25:59,970 私たちがしたいかについて この関数の外に戻します 476 00:25:59,970 --> 00:26:02,690 それが実行時に入力することを チェック、それは確認することができます 477 00:26:02,690 --> 00:26:05,850 私たちが実際に何を書かれていること 実際に、以下のダウンそれに準拠しています。 478 00:26:05,850 --> 00:26:10,225 だから、一種のチェックのようなものです 状況の自分に並べ替え。 479 00:26:10,225 --> 00:26:11,050 しかし、そこにare-- 480 00:26:11,050 --> 00:26:12,560 >> 聴衆:[聞こえない]矢印? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ:ケース時があります。 我々は暗黙のうちにできるように指定することができます 482 00:26:19,490 --> 00:26:21,550 戻り値の型を設定します。 483 00:26:21,550 --> 00:26:23,940 しかし、この場合には、私はしないでください それが働くだろうと思います。 484 00:26:23,940 --> 00:26:26,190 他のいくつかの構文があります 我々は後で見ること。 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> すべての権利なので、このソース コー​​ドは少し異なっています 487 00:26:35,280 --> 00:26:41,839 これは、からの引数を解析するため、 私たちが呼んでいる関数。 488 00:26:41,839 --> 00:26:44,130 私はそれがどのように動作するかをお見せしましょう 私たちは実際に移動する前に 489 00:26:44,130 --> 00:26:48,050 いくつかの興味深いものに それは、スウィフトに起こっています。 490 00:26:48,050 --> 00:26:51,870 >> この場合はそう、私はこれを実行する場合 コー​​ド、それは何をやっていることに気付きます 491 00:26:51,870 --> 00:26:54,900 is--が、種類の 私は奇妙なエラーが発生します。 492 00:26:54,900 --> 00:26:59,730 私はそれをのカップルを渡す必要があります コマンドライン引数として整数。 493 00:26:59,730 --> 00:27:06,220 それでは、150と80を見てみましょう、と入力してEnterキーを押し それは実際にやっているかを調べます。 494 00:27:06,220 --> 00:27:09,890 これは、それぞれのを受け入れています 整数として、これらの値。 495 00:27:09,890 --> 00:27:12,040 これは、評定表にそれらを入力します。 496 00:27:12,040 --> 00:27:14,470 そして、それは実行です その平均計算 497 00:27:14,470 --> 00:27:16,650 私たちは期待通りにことを出力します。 498 00:27:16,650 --> 00:27:19,950 >> しかし、明らかに何かが起こってあります この拒否何かで上 499 00:27:19,950 --> 00:27:23,300 整数として何か。 500 00:27:23,300 --> 00:27:27,300 あなたは私たちがいたときから思い出すかもしれませんが コマンドライン引数を扱います 501 00:27:27,300 --> 00:27:32,640 Cおよび他の言語で、非常に最初の そのコマンドライン引数で0番目の項目 502 00:27:32,640 --> 00:27:35,774 リストには、コマンドの名前です。 私たちは、実際に実行されたこと。 503 00:27:35,774 --> 00:27:38,690 したがって、この場合には、私はループです すべてのコマンドライン引数を超えます。 504 00:27:38,690 --> 00:27:41,650 しかし、私は空想の任意の並べ替えをしていませんよ その最初のものをスキップすることを確認してください。 505 00:27:41,650 --> 00:27:45,920 私は明示的にだか私は暗黙的です これらのタイプのチェックをします 506 00:27:45,920 --> 00:27:49,900 整数は実際に私の前にあります この計算を行います。 507 00:27:49,900 --> 00:27:52,420 >> そして、それは本質的です ここで何が起こっています。 508 00:27:52,420 --> 00:27:55,860 内のすべての引数に プロセスの引数、 509 00:27:55,860 --> 00:27:59,210 私はいくつかのチェックを実行するつもりです。 510 00:27:59,210 --> 00:28:01,970 そして、この場合には、私は行きますよ 最初の変換しようとします 511 00:28:01,970 --> 00:28:07,620 による整数にその引数 明示的な型キャストを実行し、 512 00:28:07,620 --> 00:28:12,310 それは、入力時に、文字列であるため、 そして、ではない実際には整数です。 513 00:28:12,310 --> 00:28:18,140 >> しかし、これは奇妙な構文の一種です、 せ等級はINT(引数)に等しい場合。 514 00:28:18,140 --> 00:28:21,120 実際に何が起きています ここに非常にあります 515 00:28:21,120 --> 00:28:24,390 あなたの使用してスウィフトに重要。 516 00:28:24,390 --> 00:28:27,610 これは何を使用しています オプションのタイプと呼ばれます。 517 00:28:27,610 --> 00:28:34,790 >> したがって、この関数、INT(引数)、 だけでなく、整数が、リターンを返します 518 00:28:34,790 --> 00:28:37,470 オプションの整数何と呼ばれています。 519 00:28:37,470 --> 00:28:41,200 そして、これは一種のです タイプの上に種類。 520 00:28:41,200 --> 00:28:45,900 あなたは、ソートのようにそれを想像することができます それは、パッケージのように戻っています。 521 00:28:45,900 --> 00:28:47,750 そして、あなたがそれを開くと、 パッケージ、それのいずれか 522 00:28:47,750 --> 00:28:53,930 結果の整数を有し、または それがすべてで、その中に絶対に何もしています。 523 00:28:53,930 --> 00:28:58,140 そして、これはエラーチェックとして有用です なぜなら、この場合のメカニズム、 524 00:28:58,140 --> 00:29:02,080 私たちが知ることができ、これをしました 型変換に成功? 525 00:29:02,080 --> 00:29:05,810 それがあった場合、それは実際には 内部の整数を持っているつもり。 526 00:29:05,810 --> 00:29:08,750 それ以外の場合は、いくつかを持っているために起こっています 私たちは、nilを呼ぶその値 527 00:29:08,750 --> 00:29:10,920 全くの整数を表しています。 528 00:29:10,920 --> 00:29:13,270 それは本当に何もないの代表です。 529 00:29:13,270 --> 00:29:18,130 >> だからこのような構成であれば 私たちはそのパッケージをアンラップすることができ、 530 00:29:18,130 --> 00:29:19,850 オプションの結合こと。 531 00:29:19,850 --> 00:29:25,560 そして、我々はそれをアンラップすることができれば パッケージ化し、内部の整数を見つけ、 532 00:29:25,560 --> 00:29:27,720 その後、私たちは何を言っています ここで、我々はその後、ということです 533 00:29:27,720 --> 00:29:33,090 その値がに設定されることを可能にします グレードと呼ばれるこの定数。 534 00:29:33,090 --> 00:29:36,590 そして、if文のこの部分、 if文の上部 535 00:29:36,590 --> 00:29:40,390 そのため、実行されます アンラップは成功しました。 536 00:29:40,390 --> 00:29:43,290 >> それはちょうどので、それが発生した場合 エラーは、おそらくありました 537 00:29:43,290 --> 00:29:47,040 この明示的な型変換で 文字列から整数へ、多分 538 00:29:47,040 --> 00:29:49,160 それは、例えば値ABCです。 539 00:29:49,160 --> 00:29:52,120 そして、それは実際に行くのではありません 整数に変換します。 540 00:29:52,120 --> 00:29:55,520 そしてそれは、nilを返します。 これは整数ではありません。 541 00:29:55,520 --> 00:29:57,570 そして、このif文をよくして失敗します。 542 00:29:57,570 --> 00:30:01,930 ため、存在しませんグレード それは整数コンテンツがありません。 543 00:30:01,930 --> 00:30:06,391 そして、それは代わりに、この他のブロックを実行します。 544 00:30:06,391 --> 00:30:06,890 はい? 545 00:30:06,890 --> 00:30:09,652 >> 観客:無記号は、N-I-Lのですか? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ:nilがはい、N-I-Lです。 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> だから、これは多分の一つであります スウィフトについての最も困難なもの、 549 00:30:20,310 --> 00:30:23,690 あなたはにいる場合は特に iOSアプリの雑草 550 00:30:23,690 --> 00:30:27,442 あなたが実際にしようとしています そこにいくつかの開発を行います。 551 00:30:27,442 --> 00:30:29,400 それは叫んことになるだろう オプションのあなたに。 552 00:30:29,400 --> 00:30:33,050 それはのためにあなたを求めことになるだろう 疑問符と感嘆符。 553 00:30:33,050 --> 00:30:37,100 しかし、あなたはあなたの場合out--把握したら 考え出すにいくつかの時間を費やします 554 00:30:37,100 --> 00:30:41,990 何は、オプションの種類で起こっています、 あなた自身に頭痛の多くを保存します 555 00:30:41,990 --> 00:30:46,040 あなたがしようとしているとして、 スウィフトでアプリケーションを記述します。 556 00:30:46,040 --> 00:30:47,660 >> それは実際には非常に強力な機能です。 557 00:30:47,660 --> 00:30:49,826 そして、あなたは、単にする必要があります 今のところそれは私の言葉を取ります。 558 00:30:49,826 --> 00:30:52,620 しかし、我々はこのような構成が表示されます および他のいくつかはそれが好き 559 00:30:52,620 --> 00:30:56,740 そのほかのソースコードの一部で 我々は少しだけであなたを紹介します。 560 00:30:56,740 --> 00:31:00,440 >> 任意の初期の質問がここにありますか? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 だから、重要な持ち帰りはということです オプションの種類は、メタタイプの一種です。 563 00:31:08,690 --> 00:31:12,500 このどちらかの値を持ち、 それがない場合、それ 564 00:31:12,500 --> 00:31:18,110 おそらく、その値が関連付けられている必要があります それと、またはそれは全く価値がありません、 565 00:31:18,110 --> 00:31:19,620 それはゼロで表されます。 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 これの残りの部分は、おそらくです あなたは期待通り。 568 00:31:28,870 --> 00:31:32,900 >> それでは、ランプアップしましょう 難易再び。 569 00:31:32,900 --> 00:31:37,070 そして、この時間は、のいくつかを見てみましょう 実際に存在する他のデータ型。 570 00:31:37,070 --> 00:31:41,290 その一つがある、辞書であります Pythonの辞書に非常に似ています。 571 00:31:41,290 --> 00:31:48,270 これは、ハッシュテーブル内にやや似ています C.それは本質的にキーのマッピングです 572 00:31:48,270 --> 00:31:49,820 キーは文字列であることができる場所。 573 00:31:49,820 --> 00:31:52,670 そして、あなたはそれらのキーを検索するとき、 これらのキーの値を持つことになります。 574 00:31:52,670 --> 00:31:56,020 だから、それは非常に配列ではないですが、 代わりに、より密接に関連します 575 00:31:56,020 --> 00:31:58,810 ハッシュマップやハッシュテーブルへ。 576 00:31:58,810 --> 00:32:02,420 >> それでは、これを想定している方法を見てみましょう 実際に私たちの前に動作するように 577 00:32:02,420 --> 00:32:05,210 ソースコード自体に入ります。 578 00:32:05,210 --> 00:32:07,680 私はこれを実行すると、 何も実際に起こりません。 579 00:32:07,680 --> 00:32:12,430 それは私が期待していていることを私に言っています 以下のタイプのいくつかのパラメータを設定します。 580 00:32:12,430 --> 00:32:16,050 だから私はに提供するつもりです それの名前を設定し、いくつかの問題、 581 00:32:16,050 --> 00:32:18,490 そうPSET0、多分私は100を得ました。 582 00:32:18,490 --> 00:32:20,790 そしてPSET1、私は5を得ました。 583 00:32:20,790 --> 00:32:24,630 そして試験で、私 本当によくやったと30を得ました。 584 00:32:24,630 --> 00:32:27,180 そしておっと、私はここでスペースを打ちます。 585 00:32:27,180 --> 00:32:30,940 >> 私はEnterキーを押したとき、あなたが見ることができます それはいくつかの計算を実行します。 586 00:32:30,940 --> 00:32:33,740 これは、評定表が3であると言います グレード、PSET1、PSET0、試験。 587 00:32:33,740 --> 00:32:36,120 そして、評定表を持っています この特定の平均。 588 00:32:36,120 --> 00:32:38,370 だからもう一度、私たちは取り組んでいます この評定表の考えと、 589 00:32:38,370 --> 00:32:44,650 しかし、我々は反復継続するつもりです 私達の機能の複雑さを持ちます。 590 00:32:44,650 --> 00:32:47,650 >> だから開始時に、私たちはしています 関数を作成しようとしています 591 00:32:47,650 --> 00:32:49,390 使用を印刷するための責任があります。 592 00:32:49,390 --> 00:32:51,920 そして、この出口があります その機能だけでしょう 593 00:32:51,920 --> 00:32:53,710 強制的にアプリケーションを終了します。 594 00:32:53,710 --> 00:32:56,530 これは、そのものではありません あなたがiOSアプリに使用されます。 595 00:32:56,530 --> 00:32:59,750 これは、この場合には、唯一であります コマンドライン引数を指定して。 596 00:32:59,750 --> 00:33:01,990 次に、Xcodeのに向かって移動を開始します。 597 00:33:01,990 --> 00:33:07,760 しかし、これはコマンドに固有のものです スウィフトのラインスタイルのプログラム。 598 00:33:07,760 --> 00:33:11,490 >> のがのいくつかを見てみましょう ここで興味深いです。 599 00:33:11,490 --> 00:33:15,150 の夫婦のみ、見てみましょう 興味深いことは、おそらく言及します 600 00:33:15,150 --> 00:33:19,930 それは私の関数であります 等級の数を印刷し、 601 00:33:19,930 --> 00:33:26,090 私はそのリストを持っていたことを思い出すかもしれません items-- PSET1、PSET0、及び試験の。 602 00:33:26,090 --> 00:33:29,130 あなたが実際にすぐにすることができます そして、簡単にこれを行います 603 00:33:29,130 --> 00:33:34,490 で評定表を取ることによって、 キーと値を持つ辞書。 604 00:33:34,490 --> 00:33:38,730 キーのすべてが通っているの検索 ここでは、ドットキー方式、 605 00:33:38,730 --> 00:33:43,180 そして、このjoinWithSeparatorを使用し、 その後、すべてのキーを取るであろう 606 00:33:43,180 --> 00:33:48,590 我々が入力したこと、またはpset1-- 申し訳ありませんが、PSET0、PSET1、およびexam-- 607 00:33:48,590 --> 00:33:53,030 そして、一緒にそれらを連結 コンマとスペースを使用して、 608 00:33:53,030 --> 00:33:55,400 1つの長い文字列を作成します。 609 00:33:55,400 --> 00:34:00,190 この結合操作だけで驚異的です 様々な状況において有用です。 610 00:34:00,190 --> 00:34:03,450 そしてそれは、このjoinWithSeparatorです。 611 00:34:03,450 --> 00:34:06,939 >> そして、これだ一つのことです スウィフト1からスウィフト2に変更。 612 00:34:06,939 --> 00:34:08,730 ありました あなたがしている場合Pythonはstyle-- 613 00:34:08,730 --> 00:34:13,219 Python--のPythonに精通 スタイルは、文字列のメソッドを結合します。 614 00:34:13,219 --> 00:34:15,699 しかし、それはもはやありません スイフト2の場合。 615 00:34:15,699 --> 00:34:19,400 あなたがしたい場合は、これを使用したいです ものの配列を連結します 616 00:34:19,400 --> 00:34:23,380 一緒に文字列を持ちます。 617 00:34:23,380 --> 00:34:27,889 >> だから、おそらくその後の当社 前の平均の議論、 618 00:34:27,889 --> 00:34:32,659 それはもう少し理にかなっています 私たちは、平均的な機能を設定するために 619 00:34:32,659 --> 00:34:36,610 むしろ任意の二重であることを ちょうど明示倍以上。 620 00:34:36,610 --> 00:34:39,239 我々はそれを持っていたので、 異常な状態ここで、 621 00:34:39,239 --> 00:34:41,550 実際にどのような評定表の場合 その中に値がありませんか? 622 00:34:41,550 --> 00:34:44,280 平均リターンは何べきですか? 623 00:34:44,280 --> 00:34:46,350 >> まあ多分Cであなた 何かをやっているだろう 624 00:34:46,350 --> 00:34:50,040 同様に、センチネル値を与えたような 0.0、または多分負の数、 625 00:34:50,040 --> 00:34:53,690 ただ事実を表すか何か いくつかのエラー状態が存在したことを 626 00:34:53,690 --> 00:34:57,910 あなたは、おそらく実際にはありません その平均値を計算する能力。 627 00:34:57,910 --> 00:35:05,590 さて指定の美しさ オプションの種類は、それを行うことであろう。 628 00:35:05,590 --> 00:35:09,540 そして私は今、すべてのこれらの言葉を言ったが、よ これは実際にoptionalsを使用しません。 629 00:35:09,540 --> 00:35:12,970 しかし、私たちはただのそれが表示されます 我々は平均設定できる分 630 00:35:12,970 --> 00:35:17,230 ように任意のデータ型であることが 実際、その後、いくつかのデータを返す場合 631 00:35:17,230 --> 00:35:18,470 私たちは、そのデータが返されます。 632 00:35:18,470 --> 00:35:20,570 そうでなければ、我々は戻ります nilが、このことを言って 633 00:35:20,570 --> 00:35:22,200 意味のある計算を持っていません。 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> のは、何か他のものに移りましょう。 636 00:35:28,570 --> 00:35:35,910 だからここから、私たちは見てきました コマンドライン内のすべてのこれらの例。 637 00:35:35,910 --> 00:35:39,470 しかし、実際にあなたが行っているもの 対処することのXcodeです。 638 00:35:39,470 --> 00:35:43,720 約すてきなものの一つ Xcodeのであり、具体的スウィフトで、 639 00:35:43,720 --> 00:35:47,450 我々はこれを持っていることです 遊び場というもの。 640 00:35:47,450 --> 00:35:51,470 や遊び場があります ていないすべてのiOSアプリで。 641 00:35:51,470 --> 00:35:54,751 しかし、それはあなたが試すことができます 非常に簡単な方法でスウィフトと。 642 00:35:54,751 --> 00:35:56,000 あなたはすべてのコードを入力することができます。 643 00:35:56,000 --> 00:35:58,140 これは、構文は、ここで強調表示きれいです。 644 00:35:58,140 --> 00:36:01,600 新しいファイルを作成すると、それが要求されます あなたは、遊び場を作成したい場合。 645 00:36:01,600 --> 00:36:08,720 しかし、遊び場のいいところ それはあなたのウィンドウの右側にあり、 646 00:36:08,720 --> 00:36:12,020 それは実際にあなたを示してい あなたのコードの出力。 647 00:36:12,020 --> 00:36:16,110 私は下にスクロールのであれば、我々は何を見ることができます コー​​ドの種々のラインの出力 648 00:36:16,110 --> 00:36:17,200 実際にあることを起こります。 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> したがって、この場合には、我々はするつもりです 方向に少しだけを変更 651 00:36:26,790 --> 00:36:30,960 本当に何かについて話します この高レベルの方法に重要な 652 00:36:30,960 --> 00:36:34,020 スウィフトが動作すること、およびそれ クロージャのこの考えはあります。 653 00:36:34,020 --> 00:36:36,960 そして、あなたはおそらくこれを見てきました JavaScriptで少し。 654 00:36:36,960 --> 00:36:40,770 そのあなたのそれらのために CS50であり、閉鎖 655 00:36:40,770 --> 00:36:47,240 行うための非常に人気の、非常に良い方法です 現代語での高レベルのもの。 656 00:36:47,240 --> 00:36:50,270 しかし、それはまたのようなものの難しいです 初めての周りにあなたの頭をラップします。 657 00:36:50,270 --> 00:36:52,269 だから、この見た場合 初めて、それは大丈夫です。 658 00:36:52,269 --> 00:36:56,740 ただ、ソースコードを見て、参照してください。 あなたは自宅でそれを把握することができます。 659 00:36:56,740 --> 00:37:01,050 >> したがって、この場合には、のは、我々を言わせて 指数の多くを作成したいです 660 00:37:01,050 --> 00:37:04,134 いくつかの固定値を持ちます。 661 00:37:04,134 --> 00:37:05,800 したがって、この場合、私は関数を作成することができます。 662 00:37:05,800 --> 00:37:09,270 私はの力を呼び出すつもりです 生活の中で2その唯一の目的 663 00:37:09,270 --> 00:37:15,770 いくつかの入力とダブルを取ることです それは、その値を返します。 664 00:37:15,770 --> 00:37:21,210 私はここにいることに注意してください データの種類を受け入れます。 665 00:37:21,210 --> 00:37:23,137 これは、xという変数になるだろう。 666 00:37:23,137 --> 00:37:23,970 これは、double型のです。 667 00:37:23,970 --> 00:37:26,190 そして、私はここにダブルを返すつもりです。 668 00:37:26,190 --> 00:37:29,100 そして、私はちょうど何をするつもりです 非常に、率直に言って、かなり 669 00:37:29,100 --> 00:37:32,650 この値を倍の素朴な方法。 670 00:37:32,650 --> 00:37:35,600 そして、私はあなたの理由はこれを紹介します ちょうど第二に有用です。 671 00:37:35,600 --> 00:37:40,418 >> ここで我々は、この範囲を持っていることに注意してください またですか。 1で何かのために、ドット 672 00:37:40,418 --> 00:37:44,130 ことを意味し、ドットドット、2、 このループは、二回実行されます。 673 00:37:44,130 --> 00:37:46,480 しかし、これはダミー変数を表します。 674 00:37:46,480 --> 00:37:49,650 それは私が実際にするつもりはないことを意味します どこでもその変数を使用します 675 00:37:49,650 --> 00:37:51,070 このループの内側。 676 00:37:51,070 --> 00:37:55,380 私はこの行をしたいです 二回実行するコードの、 677 00:37:55,380 --> 00:37:58,980 知らなくても、 その範囲の値。 678 00:37:58,980 --> 00:38:02,570 >> したがって、この場合、私は結果を実行していますよ 時間は本質的に、二度xは 679 00:38:02,570 --> 00:38:06,560 私は、この値を二乗していことを意味します。 680 00:38:06,560 --> 00:38:10,230 そして、これは、たまたま 私たちは期待通りに動作します。 681 00:38:10,230 --> 00:38:16,410 2のべき乗の値を渡します 2.0は私たちに4の出力を提供します。 682 00:38:16,410 --> 00:38:18,810 10.24 3.2作品。 683 00:38:18,810 --> 00:38:22,660 >> 今、私たちは同様の操作を行うことができます 3のパワーのためのもの。 684 00:38:22,660 --> 00:38:25,330 しかし、今だけの範囲を変更します。 685 00:38:25,330 --> 00:38:28,840 1でダミー変数について 3を介して、3倍を掛け 686 00:38:28,840 --> 00:38:29,830 そして、同じことを行います。 687 00:38:29,830 --> 00:38:32,240 >> だから、これは少し不自然な感じかもしれません。 688 00:38:32,240 --> 00:38:34,270 しかし、重要なのは、あります ここにいる事 689 00:38:34,270 --> 00:38:37,770 これらを見ていることです 2つの関数があります 690 00:38:37,770 --> 00:38:43,600 違うだけ一つのこと、 どの範囲でこの値です。 691 00:38:43,600 --> 00:38:46,910 これらの約2他のすべて 機能、3のパワーと2のパワー、 692 00:38:46,910 --> 00:38:50,440 実際には、同一の理由 彼らは同じように動作します。 693 00:38:50,440 --> 00:38:53,460 >> したがって、この時点で、少し 警報ベルはオフに行くべきです。 694 00:38:53,460 --> 00:38:56,200 うまくいけば、あなたは何を言っています、 あなたが知っている、これは少し感じています 695 00:38:56,200 --> 00:38:59,250 作業の重複などがあります。 696 00:38:59,250 --> 00:39:02,950 おそらく、その私がするような方法があります このすべてをカプセル化することができます 697 00:39:02,950 --> 00:39:06,630 機能を提供します またはその機能を作成します 698 00:39:06,630 --> 00:39:11,550 まさに私がすることなく、欲しいものありません 明示的にそれを入力する必要が。 699 00:39:11,550 --> 00:39:15,732 そして、これは何の力であります 閉鎖の私たちが行うことができます。 700 00:39:15,732 --> 00:39:16,940 それでは、これを見てみましょう。 701 00:39:16,940 --> 00:39:18,700 そして、私はカップルを費やします このため、この上の分、 702 00:39:18,700 --> 00:39:20,310 スウィフトのためにかなり重要です。 703 00:39:20,310 --> 00:39:22,900 我々は、このすべての時間を参照してください。 704 00:39:22,900 --> 00:39:24,550 私たちは、関数を定義しようとしています。 705 00:39:24,550 --> 00:39:26,380 それはpowerOfと呼ばれるようになるだろう。 706 00:39:26,380 --> 00:39:29,470 それは受け入れるだろう パラメータは、int型のyと呼ばれます。 707 00:39:29,470 --> 00:39:32,220 しかし、戻り値の型を見てみましょう。 708 00:39:32,220 --> 00:39:38,730 戻り値の型は、です 括弧、二重矢印ダブル。 709 00:39:38,730 --> 00:39:43,370 この機能することを意味します、 この機能powerOf、 710 00:39:43,370 --> 00:39:46,550 関数を返しています。 711 00:39:46,550 --> 00:39:50,845 それは二重を受け付けています そして、ダブルを返します。 712 00:39:50,845 --> 00:39:53,720 だから、一種の狂気に聞こえるかもしれません しかしそれでは、少し下にスクロールしてみましょう 713 00:39:53,720 --> 00:39:55,060 何が起こるか見るために見てください。 714 00:39:55,060 --> 00:39:57,910 我々は、この機能powerOfの中にいます。 715 00:39:57,910 --> 00:40:00,760 私たちは、新しい関数を作成しています exponentiatorと呼ばれます、 716 00:40:00,760 --> 00:40:02,900 しかし、それはそれが何であるかは重要ではありません。 717 00:40:02,900 --> 00:40:06,410 >> これは持っていることに注意してください xの入力値。 718 00:40:06,410 --> 00:40:09,910 そして、それは二重にかかっています そして、ダブルを返します。 719 00:40:09,910 --> 00:40:16,320 そして、これは、我々と同じコードであります 2の値ことを除いて、上で見ました 720 00:40:16,320 --> 00:40:20,060 または3の値は、その その範囲で上限、 721 00:40:20,060 --> 00:40:23,210 で置換されています Yのこの値は、どの 722 00:40:23,210 --> 00:40:27,230 初期パラメータでした 私たちのpowerOf関数の。 723 00:40:27,230 --> 00:40:31,700 そして、この時点で、我々 exponentiatorを返します。 724 00:40:31,700 --> 00:40:33,345 私たちは、関数を返しています。 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> それは一種の少し心が吹いようなものです。 727 00:40:39,550 --> 00:40:44,360 しかし、それでは、何が起こるか想像してみましょう 私は、この関数を呼び出すときpowerOf 728 00:40:44,360 --> 00:40:47,610 し、そこに2のようないくつかの値を渡します。 729 00:40:47,610 --> 00:40:50,020 これが意味することです 私は今の値を持ちます 730 00:40:50,020 --> 00:40:55,130 この値ことを意味し、Y 2、 このexponentiator機能のY 731 00:40:55,130 --> 00:40:56,410 その値2になります。 732 00:40:56,410 --> 00:41:01,290 しかし、私はこれを返しますよ exponentiator機能。 733 00:41:01,290 --> 00:41:05,900 >> だから、スウィフトは、私が言っていることに気付きます このケースで作成されました。 734 00:41:05,900 --> 00:41:10,550 正方形は、それが定義されていてみましょう ダブルを受け付ける機能 735 00:41:10,550 --> 00:41:12,610 そして、ダブルを返します。 736 00:41:12,610 --> 00:41:16,590 私は関数を作成しました 二乗何かその 737 00:41:16,590 --> 00:41:19,782 右ここでこのメカニズムを使用して。 738 00:41:19,782 --> 00:41:22,490 そして、実際に何が起こっているかであります それは、この関数を返していること 739 00:41:22,490 --> 00:41:26,390 exponentiatorが、この値 yがその中に包まれています。 740 00:41:26,390 --> 00:41:31,080 そして今たびに私はこれを使用します 変数またはと呼ばれるこの定数 741 00:41:31,080 --> 00:41:35,180 正方形、それが起こっています 機能として動作するように。 742 00:41:35,180 --> 00:41:39,960 そして私はその変数を呼び出すことができます 私は関数を呼び出すことになるように、 743 00:41:39,960 --> 00:41:43,830 そしてその中に番号を渡します、 このケース3のように。 744 00:41:43,830 --> 00:41:45,910 そして、私は、この値を二乗します。 745 00:41:45,910 --> 00:41:53,340 だから、3はその後になります平方しました 我々がここで見ることができるように、9になります。 746 00:41:53,340 --> 00:41:56,530 >> 本当に狂ったが、今この 私に機会を可能にします 747 00:41:56,530 --> 00:41:59,040 他powerOf関数を作成します。 748 00:41:59,040 --> 00:42:03,680 私は今私が欲しいだけでなく、[OK]を、言うことができるのように 新しい関数を作成するには、powerOf(3)、 749 00:42:03,680 --> 00:42:06,290 とにそれを保存します 定数はキューブと呼ばれます。 750 00:42:06,290 --> 00:42:10,220 そして今、キューブがあることを行っています その後意志別の関数 751 00:42:10,220 --> 00:42:14,800 入力と立方体として、いくつかの値をとります 私たちは一番下の行に見ることができるように値 752 00:42:14,800 --> 00:42:16,420 ここに。 753 00:42:16,420 --> 00:42:18,590 2のキューブが8になるとしています。 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> うまくいけば、かなりきちんともの。 756 00:42:22,680 --> 00:42:25,920 あなたは前にこれを見たことがありません。 757 00:42:25,920 --> 00:42:29,990 私は、クロージャに見てことをお勧め この少しを調査。 758 00:42:29,990 --> 00:42:33,570 それは、私たちは多くのことを本当に強力なものを参照してくださいます JavaScriptで、いくつかの他の言語。 759 00:42:33,570 --> 00:42:37,160 それはには本当に重要です 同様のAPIを理解します 760 00:42:37,160 --> 00:42:38,620 私達はちょうど秒でに取得しますことを。 761 00:42:38,620 --> 00:42:39,456 はい? 762 00:42:39,456 --> 00:42:43,740 >> 観客:あなたは powerOf(2)、括弧、およびその後 763 00:42:43,740 --> 00:42:48,764 別のかっこ、別のinput-- あなたは、基本的には、正方形を交換しています。 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ:だから見ます ここで非常に最後の行で。 765 00:42:50,930 --> 00:42:55,930 これは、実際に完全に可能です あなたが示唆したように連鎖することを行います。 766 00:42:55,930 --> 00:43:00,990 だからpowerOf(5)私たちが行っていることを意味し ここまでの5のexponentiatorを持っています。 767 00:43:00,990 --> 00:43:04,160 だから、これは本質的になるだろう 5乗〜4と同じもので、 768 00:43:04,160 --> 00:43:07,200 我々は累乗を作成しましたので、 5乗する機能、 769 00:43:07,200 --> 00:43:09,920 我々はに渡しています その値4を機能。 770 00:43:09,920 --> 00:43:12,619 そして、我々はその値を取得します 我々は、1024年に期待しています。 771 00:43:12,619 --> 00:43:14,785 聴衆:そして、それはありません 名前なので、それが容易になります 772 00:43:14,785 --> 00:43:16,570 、どのような広場を読み取ります。 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ:右、正確に。 774 00:43:17,903 --> 00:43:21,120 だから私はちょうどそれを置く前に、 ここで定数にそう 775 00:43:21,120 --> 00:43:23,808 それはその名前を使用することが容易になるという。 776 00:43:23,808 --> 00:43:24,308 はい? 777 00:43:24,308 --> 00:43:26,942 >> 聴衆:この文脈で powerOf、それは一部です 778 00:43:26,942 --> 00:43:30,774 プログラミング言語の 方法あなたとは対照的に、 779 00:43:30,774 --> 00:43:33,952 [聞こえない]にpowerOf考えますか? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ:だから この場合、powerOf 781 00:43:35,660 --> 00:43:39,280 単にの名前です。 私はここに定義した関数。 782 00:43:39,280 --> 00:43:41,801 だから、固有ではありません 言語自体に、 783 00:43:41,801 --> 00:43:43,550 その代わりに、それだけです 持っている機能 784 00:43:43,550 --> 00:43:45,628 私はそれにその名前を与えるため、その名前。 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 その他の質問は? 787 00:43:51,920 --> 00:43:52,800 大丈夫。 788 00:43:52,800 --> 00:43:54,750 >> さて、これは素晴らしいです。 789 00:43:54,750 --> 00:43:58,170 しかし、あなたが参照するつもりはありません その閉鎖機能の多く 790 00:43:58,170 --> 00:44:03,440 あなたが定義するところの内部には、このようなものです 一つの機能、別の関数の。 791 00:44:03,440 --> 00:44:04,320 そして、あなたはそれを行うことができます。 792 00:44:04,320 --> 00:44:06,430 しかし、それは一種のではありません 右、本当に必要? 793 00:44:06,430 --> 00:44:09,189 私はこれを定義しない理由と同様に exponentiator呼び出される関数 794 00:44:09,189 --> 00:44:10,480 そしてその後すぐにそれを返します。 795 00:44:10,480 --> 00:44:15,220 できないのはなぜ私だけですぐに この機能を返しますか? 796 00:44:15,220 --> 00:44:18,890 >> 実際に、これは正確です 呼ばれる概念の背後にある考え方 797 00:44:18,890 --> 00:44:22,410 匿名関数、 匿名関数は実際にはありません 798 00:44:22,410 --> 00:44:25,270 彼らので、名前を持っています 1を用意する必要はありません。 799 00:44:25,270 --> 00:44:28,700 だからこの場合は、図7(b)で、 我々は正確にそれを見つけることができます。 800 00:44:28,700 --> 00:44:31,470 それは、すべて同じコードです まったく同じことを行い、 801 00:44:31,470 --> 00:44:35,570 しかし、今は少しので、それを変更しました すぐにこのpowerOf機能その 802 00:44:35,570 --> 00:44:37,750 関数を返します。 803 00:44:37,750 --> 00:44:44,150 復帰後ことに注意してください、 オープン中括弧があります。 804 00:44:44,150 --> 00:44:46,410 それは、この入力ダブルを期待しています。 805 00:44:46,410 --> 00:44:48,560 これは、出力ダブルを期待しています。 806 00:44:48,560 --> 00:44:52,175 そして、中のキーワード コー​​ド自体を分離します。 807 00:44:52,175 --> 00:44:53,550 だから、これは匿名関数です。 808 00:44:53,550 --> 00:44:57,030 これは、実際のに対し、名前がありません 前にそれがexponentiatorと呼ばれていました。 809 00:44:57,030 --> 00:45:00,229 しかし、我々は本当に、見たように exponentiatorを参照していませんでした 810 00:45:00,229 --> 00:45:01,270 その関数の外。 811 00:45:01,270 --> 00:45:02,470 だから、問題ではありませんでした。 812 00:45:02,470 --> 00:45:06,300 したがって、この無名関数です それは無名であるため、いわゆる、 813 00:45:06,300 --> 00:45:09,107 それはまだ使われています このコードのコンテキストインチ 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> 私は次のカップルのもの うまくいけば、継続して行きます 816 00:45:16,079 --> 00:45:17,370 あなたの心を少し吹い。 817 00:45:17,370 --> 00:45:20,410 我々はさらに、これを簡略化することができます。 818 00:45:20,410 --> 00:45:24,490 鋭くあったようにあるため 先に指摘しました 819 00:45:24,490 --> 00:45:29,100 おそらく、私たちが実際に知っている、によって 何、このコードから推測 820 00:45:29,100 --> 00:45:31,750 このコードの出力は次のようにしようとしています。 821 00:45:31,750 --> 00:45:38,180 そして、実際には、この無名関数で、 我々は、実際にはデータの種類を推測することができます。 822 00:45:38,180 --> 00:45:41,650 >> したがって、この1で、私たちはもはや 明示的に定義する必要があります 823 00:45:41,650 --> 00:45:44,850 のデータの種類 この関数からの入力および出力 824 00:45:44,850 --> 00:45:45,890 いくつかの理由。 825 00:45:45,890 --> 00:45:51,390 一つは、アップ、我々が定義したということです 外側の関数のプロトタイプ、 826 00:45:51,390 --> 00:45:55,770 どのようなタイプのデータのこの匿名 関数は、入力および出力する必要があります。 827 00:45:55,770 --> 00:45:57,900 そして、他から、我々 コー​​ドから推測することができます 828 00:45:57,900 --> 00:46:01,930 ダウンここで私たちが受け入れていること ダブルタイプのものであり、入力 829 00:46:01,930 --> 00:46:03,670 そして、ダブルを返します。 830 00:46:03,670 --> 00:46:07,890 >> ここで我々は、明示的に持っていないことに注意してください 引数の名前を定義しました 831 00:46:07,890 --> 00:46:11,220 この関数は受け入れていること。 832 00:46:11,220 --> 00:46:16,180 だから私たちはを参照することができます参照してください。 $ 0、$ 1を用いてこれらのパラメータ、 833 00:46:16,180 --> 00:46:20,140 ようになどに応じて、 そのパラメータの数は、使用 834 00:46:20,140 --> 00:46:20,850 この機能インチ 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> これは、あなたが行っているものです 多くは、このオープン中括弧で確認してください 837 00:46:29,740 --> 00:46:32,797 定義が続きます $ 0とし、その後、いくつかの操作、 838 00:46:32,797 --> 00:46:34,130 して、閉じ中括弧。 839 00:46:34,130 --> 00:46:38,630 それは無名関数です それは、この動作を実行します。 840 00:46:38,630 --> 00:46:42,940 それはどこに、このパラメータを持っています それは型が推測されているのです。 841 00:46:42,940 --> 00:46:44,860 つまり、最初のパラメータは$ 0です。 842 00:46:44,860 --> 00:46:49,010 そして、いくつかの操作があります その$ 0にある起こっ。 843 00:46:49,010 --> 00:46:52,100 >> 聴衆:だから、ドル記号 基本的パラメータを意味し、 844 00:46:52,100 --> 00:46:53,429 0は最初のものを意味しますか? 845 00:46:53,429 --> 00:46:54,720 DANアルメンダリス:それは正しいです。 846 00:46:54,720 --> 00:46:59,100 だから、ドル記号は、基本的に意味します パラメータは、0は最初のものを意味します。 847 00:46:59,100 --> 00:47:02,760 しかし、それは特異的に働きます 私が命名されていないこの場合、 848 00:47:02,760 --> 00:47:07,940 私の無名関数で引数。 849 00:47:07,940 --> 00:47:11,119 >> 聴衆:Perlや何かを持っています そこにこのドル記号、ドル0? 850 00:47:11,119 --> 00:47:12,702 DANアルメンダリス:私は申し訳ありませんが、これはいますか? 851 00:47:12,702 --> 00:47:15,360 観客:Perlは持っています このドル0、ドル1-- 852 00:47:15,360 --> 00:47:17,318 DANアルメンダリス:私はないんだけど Perlであまりにも精通して、 853 00:47:17,318 --> 00:47:21,340 しかし、PHPは何の変数を定義します ドル記号に基づきます。 854 00:47:21,340 --> 00:47:26,120 そして、いくつかの言語があるかもしれません このような機能を持っています。 855 00:47:26,120 --> 00:47:28,240 実際には、スウィフトは借用 このような機能の多く 856 00:47:28,240 --> 00:47:29,489 他の言語の多くから。 857 00:47:29,489 --> 00:47:32,380 我々はそれにはPythonのヒントを参照してください。 858 00:47:32,380 --> 00:47:35,800 タイプのこの定義 OCamlのから来ているようです。 859 00:47:35,800 --> 00:47:38,932 そして、私たちはただの全体の束を持っています 異なる言語のロットからのもの。 860 00:47:38,932 --> 00:47:40,640 それは素敵なの一つです スウィフトに関するもの 861 00:47:40,640 --> 00:47:43,390 それは最高の多くがかかっていることです 言語の束からのアイデア 862 00:47:43,390 --> 00:47:47,229 そして、一緒にそれらをすべて靴べら 1つのスーパーの言語に。 863 00:47:47,229 --> 00:47:49,520 実際には、あなたは私ができるようにする場合 あなたの心を吹い続け、 864 00:47:49,520 --> 00:47:51,000 私たちはこのすべてを行ってきました。 865 00:47:51,000 --> 00:47:56,690 我々は、おそらく、この小さなを簡素化することができます もちろん、それを実現することにより、ビット、 866 00:47:56,690 --> 00:48:02,120 スウィフトは累乗を持っています 機能が内蔵されています。 867 00:48:02,120 --> 00:48:04,660 私はダーウィンをインポートする場合、これは それだけのライブラリです 868 00:48:04,660 --> 00:48:09,680 捕虜と呼ばれるこの機能は現在、特徴 私は、関数の私の力を簡素化することができます 869 00:48:09,680 --> 00:48:11,830 以下であることを。 870 00:48:11,830 --> 00:48:15,860 それは戻っされようとしています この無名関数。 871 00:48:15,860 --> 00:48:17,950 >> しかし、これは今どのように単純な見てください。 872 00:48:17,950 --> 00:48:22,780 これは匿名関数であります データのいくつかのタイプを受け入れています、 873 00:48:22,780 --> 00:48:26,600 そして、それは1になるだろう 引数具体的には、 874 00:48:26,600 --> 00:48:29,320 double型のである$ 0参照。 875 00:48:29,320 --> 00:48:32,680 これは、タイプダブルを返すために起こっています。 876 00:48:32,680 --> 00:48:35,760 しかし、returnステートメント 今暗黙的です。 877 00:48:35,760 --> 00:48:39,990 >> そしてそれは、この正確なスタイルがあること 、スウィフトに非常に、非常に普及しています 878 00:48:39,990 --> 00:48:40,790 あらゆる所に。 879 00:48:40,790 --> 00:48:43,190 私たちはこれを見てするつもりです スウィフトのすべての時間。 880 00:48:43,190 --> 00:48:46,150 だから私はこのすべてを示しています あなた、この構文のため。 881 00:48:46,150 --> 00:48:49,070 これは非常に一般的です それを意味し、表示するには 882 00:48:49,070 --> 00:48:51,420 匿名関数であります それが実行されます 883 00:48:51,420 --> 00:48:54,640 これらの引数のいくつかの操作。 884 00:48:54,640 --> 00:48:56,940 そして、暗黙のリターンがあります。 885 00:48:56,940 --> 00:49:01,850 だから、絶対に同じものです 私たちはここ、これを言うの。 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> この巻き毛のため ブラケットは関数であり、 888 00:49:08,150 --> 00:49:10,480 私たちは、この操作を実行しています 最初の引数に。 889 00:49:10,480 --> 00:49:12,170 我々はそれを返すつもりです。 890 00:49:12,170 --> 00:49:14,815 しかし、この外側のリターンがあります その関数全体を返します、 891 00:49:14,815 --> 00:49:19,855 その全体の無名関数 先ほど作成したもの。 892 00:49:19,855 --> 00:49:21,689 その他の質問は? 893 00:49:21,689 --> 00:49:23,980 すべての権利、私はかどうかを知りません あなたたちは、このための準備ができています 894 00:49:23,980 --> 00:49:27,455 しかし、我々はスウィフトとでもスゴ行くことができます。 895 00:49:27,455 --> 00:49:28,560 あなたは〜を用意する? 896 00:49:28,560 --> 00:49:29,930 [OK]を、これは素晴らしいです。 897 00:49:29,930 --> 00:49:35,310 >> 今、私たちは実際に能力を持っています スウィフトで、ためにどのようにモジュラーの 898 00:49:35,310 --> 00:49:39,650 プロトコルベースの​​方法、それはすることです 私たち自身おかしく演算子を定義します。 899 00:49:39,650 --> 00:49:44,060 この場合のように、私たちが持っていたなし よくexponentiation--のオペレーター、 900 00:49:44,060 --> 00:49:47,990 何かの力を行うため。 901 00:49:47,990 --> 00:49:53,632 しかし、私は、スイフトで、新しいを定義することができます 正確にそれを行う事業者。 902 00:49:53,632 --> 00:49:55,590 したがって、この場合にあります ここで構文の束。 903 00:49:55,590 --> 00:49:59,980 そして、私はあなたがそれを見てすることができます あなたがこれを見たときに、自宅で。 904 00:49:59,980 --> 00:50:06,890 しかし、我々はこの中置を定義します 次に私達にできるようになり、オペレータ、**、 905 00:50:06,890 --> 00:50:09,840 何のことを定義することによって、 機能**実際 906 00:50:09,840 --> 00:50:15,010 左手を受け入れるために、い 側、右側、 907 00:50:15,010 --> 00:50:21,190 し、その指数を返します 右側に左側。 908 00:50:21,190 --> 00:50:24,850 >> そして今、突然、私のすべて 新しい分子を作成しました。 909 00:50:24,850 --> 00:50:29,490 だから、2 ** 3は3乗に2を意味します。 910 00:50:29,490 --> 00:50:34,420 [MIND SOUNDを吹き込む]このことにより、 それ自体は、あなたのようなことが行う必要があります 911 00:50:34,420 --> 00:50:37,960 私は行くよ、OK、ネジC. スイフトのすべての方法。 912 00:50:37,960 --> 00:50:38,740 これは素晴らしい。 913 00:50:38,740 --> 00:50:40,140 これはかなり素晴らしいです。 914 00:50:40,140 --> 00:50:42,240 >> けれども、これは良い例です。 915 00:50:42,240 --> 00:50:45,570 しかし、私は一度外に決して持っていません この例の実際 916 00:50:45,570 --> 00:50:46,800 私自身のオペレータを定義しました。 917 00:50:46,800 --> 00:50:49,710 しかし、まだ、それが示しています スウィフトの多くの電力 918 00:50:49,710 --> 00:50:54,050 これは実際には、なぜ 実際には非常にクール。 919 00:50:54,050 --> 00:50:55,832 はい、OK? 920 00:50:55,832 --> 00:50:57,790 聴衆:あなたがしている場合 独自の演算子を定義し、 921 00:50:57,790 --> 00:51:02,940 あなたが誤っていない行う方法を知っていますか 試してみて、だオペレータを作成 922 00:51:02,940 --> 00:51:06,040 C言語のどこかで、のような スウィフトのどこかに隠されました、 923 00:51:06,040 --> 00:51:12,210 あなたのようなあいまいな 前に見ていない可能性があります。 924 00:51:12,210 --> 00:51:15,050 >> DANアルメンダリス:だからあなたがしようとしている場合 独自の演算子を定義するには、 925 00:51:15,050 --> 00:51:20,970 定義の危険性があります 既存の演算子を介して1つ。 926 00:51:20,970 --> 00:51:24,870 それは詳細レベルに入ります 私たちは以上の行く時間を持っていないと思います。 927 00:51:24,870 --> 00:51:27,620 しかし、それは危険です。 928 00:51:27,620 --> 00:51:31,320 そして、それは非常に理由は、実際にあります 私は、キャレット記号を使用していませんでした 929 00:51:31,320 --> 00:51:36,210 我々は、電源を入力しているとき、私たちは通常、 4少しキャレット5か何かを使用 930 00:51:36,210 --> 00:51:40,560 そのように、ちょうど私達がいる時 仲間か何かをGchatting。 931 00:51:40,560 --> 00:51:43,660 しかし、その場合、それは、実際には 衝突の原因となったであろう。 932 00:51:43,660 --> 00:51:46,450 そして、私はちょうどので、それを回避しました 私は、この場合には知ることが起こりました 933 00:51:46,450 --> 00:51:50,430 それは、その衝突を引き起こすこと。 934 00:51:50,430 --> 00:51:52,270 >> 大丈夫。 935 00:51:52,270 --> 00:51:55,080 さて、残念ながら、ため 過去7分、 936 00:51:55,080 --> 00:51:57,410 私が吹いて維持する必要があります あなたの心を少し。 937 00:51:57,410 --> 00:52:00,230 だから、私はあなたを表示することができます いくつかの他のものと同様。 938 00:52:00,230 --> 00:52:03,710 >> 私たちはあなたのこの考えを示しました これらの匿名の機能を有します、 939 00:52:03,710 --> 00:52:07,040 あなたがすることができ、これらの閉鎖 種の周りの機能を渡します。 940 00:52:07,040 --> 00:52:08,100 あなたはそれらを返すことができます。 941 00:52:08,100 --> 00:52:09,490 あなたはそれらを操作することができます。 942 00:52:09,490 --> 00:52:11,790 あなたは狂気のもののすべての種類を行うことができます。 943 00:52:11,790 --> 00:52:14,850 >> しかし、もうひとつ、その 有用であることが起こります 944 00:52:14,850 --> 00:52:19,740 能力は、対照的にそのまま これらの機能を返すへ 945 00:52:19,740 --> 00:52:25,146 関数内で、関数を渡します 別の関数のパラメータとして。 946 00:52:25,146 --> 00:52:30,430 あなたは、地球上の理由も考えるかもしれません 私はそのような何かをしたいですか? 947 00:52:30,430 --> 00:52:33,660 >> さて、私がしたいとしましょう 私は、この演算子を取ります 948 00:52:33,660 --> 00:52:40,260 作成し、適用するように懸命に働きました 異なる数の束にそれ 949 00:52:40,260 --> 00:52:41,770 配列インチ 950 00:52:41,770 --> 00:52:46,700 したがって、この場合には、私はの配列を持っています 1、4、7、2、5、10、56 integers--。 951 00:52:46,700 --> 00:52:48,080 そして、私はそれらすべてを倍増したいと思います。 952 00:52:48,080 --> 00:52:50,430 その私たちが一般的にするような方法 それだけで記述することです行います 953 00:52:50,430 --> 00:52:53,440 そのループのためのシンプルな それらのすべてを反復 954 00:52:53,440 --> 00:52:57,140 とのいくつかの並べ替えを行います それら平方操作、 955 00:52:57,140 --> 00:53:02,700 新にそれらの新しい値を入力します 変数、またはむしろ、ここに新しい配列。 956 00:53:02,700 --> 00:53:07,370 との出力の値 結果は、これらの配列のすべてです、 957 00:53:07,370 --> 00:53:10,200 あるいはむしろ、それらのすべて 要素は今の二乗します。 958 00:53:10,200 --> 00:53:12,680 >> そして、我々は同じことを行うことができます それを3乗するためのもの、 959 00:53:12,680 --> 00:53:15,360 少し警鐘 オフに行くする必要があります 960 00:53:15,360 --> 00:53:17,360 多分そこだと言って いくつかの方法私​​たちは希望 961 00:53:17,360 --> 00:53:19,860 この少しを簡素化することができます。 962 00:53:19,860 --> 00:53:21,130 そして、実際にはそこにあります。 963 00:53:21,130 --> 00:53:25,320 私たちが作成することができれば 私たちにできる機能 964 00:53:25,320 --> 00:53:28,350 捕食者、関数として、受け入れるには? 965 00:53:28,350 --> 00:53:30,350 したがって、この場合には、取ります これらの引数を見てください。 966 00:53:30,350 --> 00:53:33,220 私たちは、ダブルスのリストを受け入れるつもりです。 967 00:53:33,220 --> 00:53:35,030 そして、我々が行っています 機能を確定します 968 00:53:35,030 --> 00:53:40,990 起こっているFと呼ばれる変数で ダブルを取ると、ダブルを返します。 969 00:53:40,990 --> 00:53:43,320 そして、全体の出力 この関数全体の 970 00:53:43,320 --> 00:53:47,310 マッパーがしようとしていると呼ばれます 二重と呼ばれる配列を返します。 971 00:53:47,310 --> 00:53:52,380 >> これはその後、私ができるようになる何 やることリストを反復処理することです 972 00:53:52,380 --> 00:53:56,350 そして今、同じことを行うが、 それぞれにその関数を適用します 973 00:53:56,350 --> 00:53:58,970 そのリスト内の個々の値の。 974 00:53:58,970 --> 00:54:00,750 だから私は本当に何であるかFかわかりません。 975 00:54:00,750 --> 00:54:02,010 それは私には関係ありません。 976 00:54:02,010 --> 00:54:06,530 しかし、それが二重にかかるように、 、その上にいくつかの操作を実行します 977 00:54:06,530 --> 00:54:08,640 して、返します。 ダブル、私は次のようになり 978 00:54:08,640 --> 00:54:13,415 全体にその機能をマッピングすることができます リスト内のすべての単一の要素。 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> プログラミングのこのタイプは 高階関数と呼ばれ、 981 00:54:20,930 --> 00:54:24,440 どこに関数を渡しています 周りのパラメータとして 982 00:54:24,440 --> 00:54:26,430 機能で物事をやって。 983 00:54:26,430 --> 00:54:29,640 それは一種のこれらのすべてを取るようなものです 我々はCS50で学んだアイデア 984 00:54:29,640 --> 00:54:31,390 ソートそれらを取ります 次のレベルへ。 985 00:54:31,390 --> 00:54:34,140 そして、これはすべてのCS51スタイルのものです。 986 00:54:34,140 --> 00:54:37,080 そして、私たちは徹底的に行きますよ そのようなクラスで、より。 987 00:54:37,080 --> 00:54:38,930 >> しかし、これはまた、あります ここで重要な私たちのため 988 00:54:38,930 --> 00:54:42,010 機能の多くを見ます スウィフトで使用されます 989 00:54:42,010 --> 00:54:45,590 それは基本的にありません 我々が持っている場合は、この、 990 00:54:45,590 --> 00:54:48,300 いくつかの数字、数字のいくつかの配列。 991 00:54:48,300 --> 00:54:50,850 我々はそれを渡すつもりです 私たちのマッパーに配列。 992 00:54:50,850 --> 00:54:55,770 そして、我々はまた、しようとしています これは、いくつかの関数を渡します 993 00:54:55,770 --> 00:54:57,950 我々はすでにここに定義しました。 994 00:54:57,950 --> 00:54:59,690 それは正方形になるだろう。 995 00:54:59,690 --> 00:55:02,220 そして、我々はそれからになるだろう これらの数字のすべてを二乗 996 00:55:02,220 --> 00:55:04,710 ここで、この結果にそれを格納します。 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> したがって、この場合、私たちは私たちを定義しました 独自の機能は、マッパーと呼ばれます。 999 00:55:11,000 --> 00:55:15,370 しかし、この正確な事はあります、 実際には、スウィフトに内蔵。 1000 00:55:15,370 --> 00:55:18,960 の様々なものがあります マップと呼ばれる機能。 1001 00:55:18,960 --> 00:55:21,520 マップ機能があります、 減らす機能があります、 1002 00:55:21,520 --> 00:55:25,630 およびフィルタ機能があります、 基本的に関数を適用します 1003 00:55:25,630 --> 00:55:30,782 内のすべての単一の要素に いくつかの方法でそれらを修正するためにリストします。 1004 00:55:30,782 --> 00:55:34,510 >> 観客:あなたが変換されるので、それで 別の形式へのデータ 1005 00:55:34,510 --> 00:55:36,134 function--を通して 1006 00:55:36,134 --> 00:55:37,050 DANアルメンダリス:右。 1007 00:55:37,050 --> 00:55:39,420 うん、そう機能 我々は受け入れていること 1008 00:55:39,420 --> 00:55:41,790 何らかの方法でデータを変換されます。 1009 00:55:41,790 --> 00:55:44,700 このケースでは、のいずれかでした それを二乗、または我々はそれを3乗しました、 1010 00:55:44,700 --> 00:55:50,060 または実際に、我々は実行することができ まったくその上に何も操作しません。 1011 00:55:50,060 --> 00:55:54,150 >> しかし、私はその後、どのようにこれをお見せしましょう 実際に見に行くされています。 1012 00:55:54,150 --> 00:55:56,681 そして再び、私が実行しています 少しの時間。私はないんだけど 1013 00:55:56,681 --> 00:55:59,430 以上のすべての行くことができるようにするつもり ここでは詳細には、ソースコードの。 1014 00:55:59,430 --> 00:56:00,721 しかし、私はそれをすることをお勧めします。 1015 00:56:00,721 --> 00:56:03,850 私たちはできるだけ早くそれを投稿します この講演の後に可能。 1016 00:56:03,850 --> 00:56:07,610 >> しかし、あなたはこれを見て取る場合、 私たちが数のリストを持っていることを前提とし、 1017 00:56:07,610 --> 00:56:10,260 この中の数字の配列 変数と呼ばれる数字。 1018 00:56:10,260 --> 00:56:16,670 その後、我々はこれを実行したいです これらの数字のフィルタ操作。 1019 00:56:16,670 --> 00:56:19,730 そのようにフィルタが高くなります 次関数こと 1020 00:56:19,730 --> 00:56:24,660 また、配列や関数を受け入れます。 1021 00:56:24,660 --> 00:56:28,760 そして、その中のすべての要素に アレイは、その機能を実行します。 1022 00:56:28,760 --> 00:56:31,990 >> その関数を返す場合 trueの場合、そのアイテムを保持します。 1023 00:56:31,990 --> 00:56:36,100 その関数がfalseを返す場合、 それは、そのアイテムを捨てます。 1024 00:56:36,100 --> 00:56:40,480 そして、それはリストを返します それは、すべての構成されています 1025 00:56:40,480 --> 00:56:44,360 フィルタリングされたそれらのアイテムの。 1026 00:56:44,360 --> 00:56:47,150 >> そのように別の言葉では、これは 同じ考え、評定表。 1027 00:56:47,150 --> 00:56:50,800 私たちは、グレードの様々ながあるかもしれません この値に番号を呼ばれます。 1028 00:56:50,800 --> 00:56:55,590 100、70、とのことでした。 40、というようになど。 1029 00:56:55,590 --> 00:56:59,110 何このフィルタがないことの通知であります これはそのシンタックスシュガーであります 1030 00:56:59,110 --> 00:57:01,310 無名関数のため。 1031 00:57:01,310 --> 00:57:05,980 これは言って匿名関数であります その私が受け入れているパラメータ 1032 00:57:05,980 --> 00:57:09,690 それならば、になるだろう 、70以上であります 1033 00:57:09,690 --> 00:57:15,837 これはつまり、trueを返します その項目は、このフィルタに保持されます。 1034 00:57:15,837 --> 00:57:17,920 それでは、少しであるとします このことについてより具体的な。 1035 00:57:17,920 --> 00:57:25,760 私は、この数値の配列を持っている場合 それは、100、70、及び40から成り 1036 00:57:25,760 --> 00:57:29,730 私は、このフィルタを実行します それらのそれぞれの操作。 1037 00:57:29,730 --> 00:57:33,270 その結果、最初の100のこの値です。 1038 00:57:33,270 --> 00:57:36,770 100以上 70に、真であります 1039 00:57:36,770 --> 00:57:41,950 100に保持されていることを意味 この配列のこの新しいコピー。 1040 00:57:41,950 --> 00:57:44,290 70も通過します。 1041 00:57:44,290 --> 00:57:46,020 しかし40はしていません。 1042 00:57:46,020 --> 00:57:54,290 だからpassingCountに何が返されます 要素100との配列です70-- 1043 00:57:54,290 --> 00:57:57,410 100、カンマ、70。 1044 00:57:57,410 --> 00:57:59,870 これらは2つだけでした 維持したアイテム。 1045 00:57:59,870 --> 00:58:03,740 だから理由は、私はすぐに通過しました 高次のこれらの種類の多く 1046 00:58:03,740 --> 00:58:08,680 これは、共通であるためのものがあります あなたはかなりスウィフトで見るもの 1047 00:58:08,680 --> 00:58:16,810 頻繁に、いくつかの操作を行っています この無名関数の構文を使用して。 1048 00:58:16,810 --> 00:58:18,450 >> いくつかのクールなものがあります。 1049 00:58:18,450 --> 00:58:24,730 スイッチは、スウィフトに本当に強力です 私は強力な、狂った狂ったように意味します。 1050 00:58:24,730 --> 00:58:28,250 あなたはスイッチを使用することができますし、 あなたは実際にそれらを適用することができます 1051 00:58:28,250 --> 00:58:33,160 一種の狂気である範囲に、 そのような派手なものを行います。 1052 00:58:33,160 --> 00:58:37,540 >> しかし、最後の数分で、 私はかなり遠くスキップしたいです 1053 00:58:37,540 --> 00:58:46,940 そしてあなたの方法の具体例を示します 我々はスウィフトを使ってiOSアプリで作成することができます。 1054 00:58:46,940 --> 00:58:49,040 だから、あなたがやっているとき これは、あなたが取る必要があるでしょう 1055 00:58:49,040 --> 00:58:51,990 Appleの上のルックat-- ドキュメント、彼ら 1056 00:58:51,990 --> 00:58:56,084 本当に良いチュートリアルがたくさんあり​​ます 最初のアプリケーションを作成するため。 1057 00:58:56,084 --> 00:58:58,250 そして、私は何をすることをお勧め ので、彼らはあなたを取ること 1058 00:58:58,250 --> 00:59:04,110 まさにまでのすべての工程を経て iOSアプリケーションを作成するためにクリックしてください。 1059 00:59:04,110 --> 00:59:07,290 >> しかし、ここで我々は、このiOSアプリを持っています。 1060 00:59:07,290 --> 00:59:10,960 そして、それは本当にかなりシンプルなアプリです。 1061 00:59:10,960 --> 00:59:13,840 私はこれを実行すると、私がお見せしましょう あなたはそれがどのように見えますか。 1062 00:59:13,840 --> 00:59:19,480 それは基本的にありませんすべてであります インターネットJSONファイルからプル 1063 00:59:19,480 --> 00:59:22,300 私は、サーバー上に格納されていること。 1064 00:59:22,300 --> 00:59:26,310 そして、そのJSONファイル 許可するイメージを定義します 1065 00:59:26,310 --> 00:59:31,680 私には、貫通後、順番に私の アプリ、私のWebサーバーからの画像。 1066 00:59:31,680 --> 00:59:32,880 >> だから私はgetN​​extImageここにあります。 1067 00:59:32,880 --> 00:59:37,100 それは、インターネットから画像をロードします し、画面に表示します。 1068 00:59:37,100 --> 00:59:38,200 >> だから、非常に簡単です。 1069 00:59:38,200 --> 00:59:41,550 しかし、ここでの目標は、表示することです 私たちは物事を組み合わせることができますどのように 1070 00:59:41,550 --> 00:59:47,820 CS50の後者の数週間から 実際のiOSアプリケーションに。 1071 00:59:47,820 --> 00:59:53,140 換言すれば、おそらく1 あなたがやりたいだろうもの 1072 00:59:53,140 --> 00:59:56,340 iOSアプリケーションを持つことであること インターネットからデータを引き出すことができます 1073 00:59:56,340 --> 00:59:59,070 そしてユーザーにいくつかの情報が表示されます。 1074 00:59:59,070 --> 01:00:03,130 それは完全にポイントです ここでは、このソースコードの。 1075 01:00:03,130 --> 01:00:07,890 >> だから、について語ったことがたくさんがあります 実際のiOS開発を行う方法について説明します。 1076 01:00:07,890 --> 01:00:12,860 狂気の構文がたくさんあり​​ます 我々は非常に、まだ見ていないこと 1077 01:00:12,860 --> 01:00:15,580 クラスと同じように、クラスが実際に何です。 1078 01:00:15,580 --> 01:00:19,470 私たちは、主に無視することができます 当分の間、それ。 1079 01:00:19,470 --> 01:00:23,250 >> しかし、私たちが含まれていることに気付きます この物事の様々な内 1080 01:00:23,250 --> 01:00:27,720 我々はすでにのように見てきたこと 特定の名前を持つ関数。 1081 01:00:27,720 --> 01:00:32,650 そして、我々はそれらを与えるとき 機能正しい名前 1082 01:00:32,650 --> 01:00:36,530 実際には、iOSのことで期待されていること これは少し不思議な感じ。 1083 01:00:36,530 --> 01:00:40,300 しかし、あなたが作成したとき そこiOSアプリケーション、 1084 01:00:40,300 --> 01:00:47,590 その特定の関数名です 携帯電話自体によって呼び出されます 1085 01:00:47,590 --> 01:00:52,440 アプリケーションがしようとするロードされます 実際にはプロセスを作成します 1086 01:00:52,440 --> 01:00:54,787 あなたのアプリケーションを実行します。 1087 01:00:54,787 --> 01:00:58,120 だからもう一度、私の事がたくさんあり​​ます 私たちのために、ここでごまかすする必要があります 1088 01:00:58,120 --> 01:01:00,570 これについて具体的に話をします。 1089 01:01:00,570 --> 01:01:06,050 しかし、私は多分見になることをお勧めします 他のiOSセミナーだけでなく、いくつかの 1090 01:01:06,050 --> 01:01:09,290 行うチュートリアルオンラインの 記述のより良い仕事 1091 01:01:09,290 --> 01:01:11,030 具体的な情報。 1092 01:01:11,030 --> 01:01:15,760 >> しかし、我々は物事のカップルを見ることができます ここにコードから興味深いものです。 1093 01:01:15,760 --> 01:01:17,950 if文私たちが持っていることに注意してください。 1094 01:01:17,950 --> 01:01:20,400 ところで、一つの重要な if文についての事 1095 01:01:20,400 --> 01:01:24,860 であることを囲む括弧 ブール式はオプションです。 1096 01:01:24,860 --> 01:01:30,800 しかし、中括弧は、オプションではありません どんなに少数または多数のコードの行 1097 01:01:30,800 --> 01:01:32,360 あなたは、if文を持っています。 1098 01:01:32,360 --> 01:01:38,670 あなたは、if文を持つことができません スウィフトで中括弧なし。 1099 01:01:38,670 --> 01:01:41,000 >> そして、これは、よく、一種の愚かです。 1100 01:01:41,000 --> 01:01:43,910 しかし、そのための歴史的な理由があります。 1101 01:01:43,910 --> 01:01:46,180 それは、自分自身からあなたを救うことになっています。 1102 01:01:46,180 --> 01:01:49,899 例えばこのように、あなたがすることはできません その周りの中括弧を排除 1103 01:01:49,899 --> 01:01:50,440 if文。 1104 01:01:50,440 --> 01:01:52,730 これらは、実際に必要とされます。 1105 01:01:52,730 --> 01:01:54,480 だから私はことをお勧め このを見てみましょう。 1106 01:01:54,480 --> 01:01:56,230 しかし、もう一つがあります 私がしたいことを構築 1107 01:01:56,230 --> 01:02:02,640 スウィフトについてをお見せすること 比較スイフト2.0に新しく追加されました 1108 01:02:02,640 --> 01:02:08,460 スウィフトの古いバージョンに、 これは以下のとおりです。 1109 01:02:08,460 --> 01:02:11,620 私はそれをここに置いたところを見てみましょうか? 1110 01:02:11,620 --> 01:02:16,630 >> したがって、この関数で呼び出さ fetchJSON、この機能 1111 01:02:16,630 --> 01:02:23,450 そのJSONを引っ張るための責任があります ちょうどそう起こるのURLからファイル 1112 01:02:23,450 --> 01:02:26,310 私のCS50のIDE上で実行されます。 1113 01:02:26,310 --> 01:02:28,580 私は、Apacheの開始しました そこに私のJSONファイルを入れて、 1114 01:02:28,580 --> 01:02:32,110 そして私は、それを引っ張ることができますよ 使用して、インターネットからのデータ 1115 01:02:32,110 --> 01:02:36,430 この関数とこのURL、 これは電話で提供されています。 1116 01:02:36,430 --> 01:02:40,490 それはによって提供さです あなたが使用するライブラリ 1117 01:02:40,490 --> 01:02:43,140 あなたには、いくつかのiOSアプリの開発をやっています。 1118 01:02:43,140 --> 01:02:49,690 >> この珍しい存在であることをここに注意してください 構文的な構築物は、ガードと呼ばれます。 1119 01:02:49,690 --> 01:02:53,530 そして、本当にこれはすべてであります スウィフトは、検証の方法です 1120 01:02:53,530 --> 01:02:56,870 いくつかのものは持っていること あなたの前に満たされて 1121 01:02:56,870 --> 01:03:00,000 関数の残りの部分を続行します。 1122 01:03:00,000 --> 01:03:04,260 だから私は使用して、持っている可能性が このオプションのタイプ、 1123 01:03:04,260 --> 01:03:10,530 私がして、URLを発見したかもしれません このNSURL機能を実行 1124 01:03:10,530 --> 01:03:16,640 およびURLにそれを保存します 定し、次にチェック 1125 01:03:16,640 --> 01:03:20,820 URLがそのため、ゼロであったかどうかを確認し オプションの型を返すつもりでした。 1126 01:03:20,820 --> 01:03:25,660 それがnilだったなら、私は希望 エラーをプリントアウトしてから戻ります。 1127 01:03:25,660 --> 01:03:29,970 >> しかし、その代わりに、どのようなガードができます 私たちは、その非常にものです行います 1128 01:03:29,970 --> 01:03:34,550 それがあることを確認してください 実際にURLケース 1129 01:03:34,550 --> 01:03:38,020 適切NSURLによって設定されています。 1130 01:03:38,020 --> 01:03:41,810 そしてそれは、その後、ある場合 このをスキップして、それ 1131 01:03:41,810 --> 01:03:46,110 あなたがを続行することができます URLが正しく定義されていました。 1132 01:03:46,110 --> 01:03:48,830 しかし、それが事実である場合に URLが正しく定義されていません、 1133 01:03:48,830 --> 01:03:52,550 この関数はエラーを返した場合 またはいくつかの他の予期しないもの 1134 01:03:52,550 --> 01:03:58,030 実際に、このガード構築物を発生します その後、出力そのエラーに私たちを可能にします 1135 01:03:58,030 --> 01:04:00,390 そして、すぐに戻ります。 1136 01:04:00,390 --> 01:04:00,890 はい? 1137 01:04:00,890 --> 01:04:04,839 >> 聴衆:だから、それはようなものです 後、他の場合のような? 1138 01:04:04,839 --> 01:04:07,130 DANアルメンダリス:それは一種のです 、yesの場合、それ以外の場合のように 1139 01:04:07,130 --> 01:04:14,200 このURLはその後であることを除いて この下のすべてのために定義されています。 1140 01:04:14,200 --> 01:04:20,420 それはそれを、このガードを通過した場合 実際にデータが入力されます 1141 01:04:20,420 --> 01:04:29,500 そして残りで使用可能 あなたの関数内のソースコード。 1142 01:04:29,500 --> 01:04:33,790 だから私は、あなたがしようとしていると思われます 同様に、このガードを見始めます。 1143 01:04:33,790 --> 01:04:36,670 そして、それに留意します。 1144 01:04:36,670 --> 01:04:46,270 >> だから、他のカップルを見て 物事、ここでこの権利は何をされ、 1145 01:04:46,270 --> 01:04:53,377 だと思います、だけで何に基づいて、 我々は前に話していましたか? 1146 01:04:53,377 --> 01:04:56,650 >> 観客:それはリストで実行すると思いますか? 1147 01:04:56,650 --> 01:04:59,100 >> DANアルメンダリス:だからそれは近いです。 1148 01:04:59,100 --> 01:05:02,360 これは、我々が定義している関数です。 1149 01:05:02,360 --> 01:05:07,240 そして、我々はその機能を入力しています ここで、この関数の引数として。 1150 01:05:07,240 --> 01:05:09,120 >> 聴衆:[聞こえない] nilでない場合。 1151 01:05:09,120 --> 01:05:11,470 だから、右のリストには? 1152 01:05:11,470 --> 01:05:15,450 >> DANアルメンダリス:エラーがnilでない場合は、 だから、私はスクロールする必要がis--。 1153 01:05:15,450 --> 01:05:18,060 まあ、見てみましょう、私は本当にすることはできません ここで右にスクロールします。 1154 01:05:18,060 --> 01:05:23,161 エラーが中である引数です この無名関数に渡されます。 1155 01:05:23,161 --> 01:05:24,410 これは匿名関数です。 1156 01:05:24,410 --> 01:05:25,480 これは名前がありません。 1157 01:05:25,480 --> 01:05:29,850 しかし、我々は、これらの3つを受け入れています 引数、データ、応答、およびエラーが発生しました。 1158 01:05:29,850 --> 01:05:33,590 そして、それはそう、voidを返すために起こっています それが何かを返すことはないだろう。 1159 01:05:33,590 --> 01:05:37,910 そして、これは内容であります その関数の。 1160 01:05:37,910 --> 01:05:41,961 そして、我々はその内部にアクセスすることができ これらの引数のそれぞれの機能。 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> だから、旋風です 言語のツアー。 1163 01:05:48,679 --> 01:05:50,470 しかし、私はこれを願って、 うまくいけば、あなたが取るとして 1164 01:05:50,470 --> 01:05:54,490 チュートリアルのいくつかを見 スウィフトとiOSの開発に特有の、 1165 01:05:54,490 --> 01:05:57,481 あなたがに行く場合は特に アップルの開発者向けウェブ当ページ - 1166 01:05:57,481 --> 01:05:59,980 彼らは本当に良いの多くを持っています チュートリアルあなたが始めるために。 1167 01:05:59,980 --> 01:06:05,010 しかし、話のうまくいけばちょうどこの時間 自身が与えている構文について 1168 01:06:05,010 --> 01:06:08,760 それを使い始めるには十分ます。 1169 01:06:08,760 --> 01:06:12,950 >> 私たちは、このソースのすべてを掲載します セミナーウェブサイト上のコード 1170 01:06:12,950 --> 01:06:17,800 できるだけ早く、またスライド あなたはすべての人のための参照を持っています。 1171 01:06:17,800 --> 01:06:20,530 しかし、あなたのプロジェクトで幸運。 1172 01:06:20,530 --> 01:06:23,640 そして、今後のためにありがとうございました。 1173 01:06:23,640 --> 01:06:26,990 >> [拍手] 1174 01:06:26,990 --> 01:06:28,026