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 การพัฒนา App iOS ของคุณกับสวิฟท์ 5 00:00:11,690 --> 00:00:15,690 ฉันแดน Armendariz และฉันเป็นพระอุปัชฌาย์ วิทยาการคอมพิวเตอร์ที่นี่ที่ฮาร์วาร์ 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 เห็นใน C ตลอด CS50 หรือ แม้กระทั่งบางภาษาอื่น ๆ 20 00:01:06,600 --> 00:01:09,310 ที่เราได้เริ่มต้น ใช้ใน CS50 เช่น PHP, 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 กับสวิฟท์หรือจริงๆ ใด ๆ ที่พัฒนา app iOS ของคุณ, 28 00:01:34,442 --> 00:01:35,900 มีคู่ของความต้องการ 29 00:01:35,900 --> 00:01:39,940 ก่อนอื่นคุณจะต้องมีการใช้ Mac วิ่งในตัวอย่าง 30 00:01:39,940 --> 00:01:43,880 ที่เราจะต้องใช้ในวันนี้ เป็นรุ่นที่ค่อนข้างใหม่ของระบบปฏิบัติการ 31 00:01:43,880 --> 00:01:46,580 เอ็กซ์ในกรณีนี้ผมใช้ 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 นับตั้งแต่แอปเปิ้ลปล่อยให้มันผมคิดว่า สิ่งที่จะได้รับน้อยกว่าปี 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 ที่อาจเป็นไปได้ หนึ่งในอาการปวดหัวที่ใหญ่ที่สุด 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 ของแอปเปิ้ลแอพพลิเค ทีมพัฒนาซึ่ง 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. 72 00:03:56,350 --> 00:04:00,400 และเพื่อให้เราจะเห็นว่า มีจำนวนมากของคบ 73 00:04:00,400 --> 00:04:04,450 จากความรู้ที่มีอยู่ จากซีที่เราสามารถที่จะสวิฟท์พอร์ต 74 00:04:04,450 --> 00:04:07,290 >> แต่มีสิ่งที่ ทำให้มันแตกต่างจากซี 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 ในความเป็นจริงงาน 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 >> หนึ่งในวิธีที่ดีที่สุดที่คุณสามารถ ได้รับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ 96 00:05:10,780 --> 00:05:14,700 ตรงไปตรงมาเป็นเพียงแค่ผ่านแอปเปิ้ล ให้เอกสารสำหรับสวิฟท์ 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 ต้องการที่จะทำอย่างไรกับ API ที่เกี่ยวข้องกับ iOS 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 นี้เป็นไฟล์สวัสดีโลกสำหรับสวิฟท์ 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 ไม่มีผู้ใดเป็นของ cruft ที่เรามีกับซี 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 หลังจากครู่หนึ่งหรือสองก็ จะเห็นว่าเรามีตอนนี้ 128 00:06:42,960 --> 00:06:45,360 รวบรวมนี้ลงในไฟล์ที่เรียกว่า 1 129 00:06:45,360 --> 00:06:51,090 และตอนนี้เราได้พิมพ์ CS50 ของเรา โปรแกรมของเราค่อนข้างสวัสดีโลก 130 00:06:51,090 --> 00:06:54,690 >> ขอให้สังเกตสิ่งอื่น ๆ ที่หนึ่ง ดีว่าโดยปกติ 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 และคนที่ฉันต้องการจะบอกคุณ เกี่ยวกับความหมายแรกคือปล่อยให้เรื่องนี้ 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 แต่ด้วยการใช้ปล่อยให้เรื่องนี้ คำหลักที่เรากำลังพูด 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 แล้วใช้ parens เปิดทับขวา, แล้วชื่อของตัวแปรของฉัน 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 ใส่ในบรรทัด shebang ซึ่ง พื้นเพียงระบุ 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-- ให้ String ลำไส้ใหญ่ชื่อเท่ากับ 187 00:10:01,590 --> 00:10:05,530 แดนซึ่งในกรณีนี้หมายถึงเรา จะกำหนดชื่อเรียกอย่างต่อเนื่อง 188 00:10:05,530 --> 00:10:07,150 มันจะเป็นชนิดสตริง 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 และเรากำลังจะไปแล้ว concatenate สองสายด้วยกันสวัสดีสตริง 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 Goosey 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 สำหรับการดำเนินการ concatenation สตริง 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 ทุนสตริง 262 00:13:58,490 --> 00:14:03,510 แล้วใช้ concatenation สตริง ผู้ประกอบการที่จะปรับเปลี่ยนตัวแปรฉลากของเรา 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-- ไม่แน่นอน เราไม่ใช้คำหลักให้ 274 00:14:45,350 --> 00:14:49,620 ดังนั้นนั่นหมายความว่าเราสามารถปรับเปลี่ยนแล้ว เนื้อหาของอาร์เรย์นี้ 275 00:14:49,620 --> 00:14:53,420 มันเป็นประเภท Int อาร์เรย์ และเราสามารถบอกได้ว่า 276 00:14:53,420 --> 00:14:56,260 ขึ้นอยู่กับวงเล็บเหล่านี้ที่นี่ 277 00:14:56,260 --> 00:14:58,930 >> ตอนนี้หนึ่งในสิ่งที่ดี เกี่ยวกับเรื่องนี้คือการที่เรา 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 >> ดังนั้นตอนนี้อาร์เรย์นี้มีดังต่อไปนี้ contents-- 100, 0, 90, 85 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 grades-- 100, 0, 90, 85, 95, 70, และ 80 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 จนถึงอย่างไรก็ดีหลายคนหนึ่ง 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 หากคุณเปลี่ยนช่วงนี้ จุดสามจุด, 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 คำถามใด ๆ เกี่ยวกับเรื่องนี้สำหรับวง? 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 คือการที่เราต้องการจริง ดำเนินการในส่วนที่สองคู่ 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 มันไม่เพียงพอสำหรับการเพียงหนึ่ง ในรายการเหล่านั้นจะเป็นคู่ 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 ดังนั้นเราจะ typecast อย่างชัดเจนแล้ว ผลรวมที่เราได้คำนวณข้างต้น 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-- เรียก Gradebook 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 ที่กำหนดไว้กับคำหลักที่ช่วยให้ปริยาย ซึ่งหมายความว่าฉันไม่สามารถปรับเปลี่ยนนี้ 390 00:21:34,380 --> 00:21:39,850 ตัวแปร Gradebook ที่นี่ 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 แต่ที่เป็น gotcha ที่เราได้ คนสังเกตเห็นได้กระทำในอดีตที่ผ่านมา 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 ซึ่งเป็น Gradebook และในครั้งนี้ เป็นไปเพื่อกลับมาเป็นประเภทคู่ 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 ตกลงดังนั้นวิธีการที่เราจะไป ในการคำนวณค่าเฉลี่ยนี้หรือไม่? 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 ในการคำนวณค่าเฉลี่ยถ้า เรามี gradebook มีที่ว่างเปล่า 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 โดยการระบุเกรดใน gradebook มีสิ่งที่เรากำลังพูดถึง 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 ทุกครั้งที่สำหรับวง iterates 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 จนกว่าจะมี Gradebook หมดตัวเองขององค์ประกอบ 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 ตกลงคำถามใด ๆ ? 444 00:24:26,950 --> 00:24:27,699 ใช่? 445 00:24:27,699 --> 00:24:28,990 ผู้ชม: ฉันมีสองคำถาม 446 00:24:28,990 --> 00:24:33,586 จำนวนหนึ่งสมมุติฐานสามารถ คุณเรียกจำนวนเต็มในนี้? 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 >> ผู้ชม: และประการที่สองคุณ มีหนึ่งคู่ที่ด้านบน 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 อาร์กิวเมนต์ที่เป็นจำนวนเต็มโดย การดำเนินการ typecast ชัดเจน 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 มิฉะนั้นมันจะมีบางส่วน ค่าที่เราจะเรียกศูนย์ที่ 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 และส่วนหนึ่งของถ้าคำสั่งนี้ ส่วนบนของถ้าคำสั่ง 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 มันเป็นค่าเอบีซีเช่น 539 00:29:49,160 --> 00:29:52,120 และที่ไม่ได้ไปจริง แปลงเป็นจำนวนเต็ม 540 00:29:52,120 --> 00:29:55,520 จากนั้นก็จะกลับศูนย์ ซึ่งไม่ได้เป็นจำนวนเต็ม 541 00:29:55,520 --> 00:29:57,570 และนี่ถ้าคำสั่งเดียวแล้วล้มเหลว 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: ไม่มีเป็น 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 ในขณะที่คุณกำลังพยายามที่จะ เขียน app ในสวิฟท์ 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 ดังนั้นประเด็นที่สำคัญก็คือว่า เลือกประเภทคือการจัดเรียงของ metatype 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 หนึ่งในนั้นคือพจนานุกรมซึ่งเป็น คล้ายกับงูหลามพจนานุกรม 571 00:31:41,290 --> 00:31:48,270 มันค่อนข้างคล้ายกับตารางแฮชใน ซีมันเป็นหลักการทำแผนที่ของคีย์ 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 มันบอกว่า Gradebook สาม เกรด pset1, pset0, การสอบ 587 00:32:33,740 --> 00:32:36,120 และมีสมุดคะแนน นี้เฉลี่ยที่เฉพาะเจาะจง 588 00:32:36,120 --> 00:32:38,370 ดังนั้นอีกครั้งเรากำลังทำงาน กับความคิด Gradebook นี้ 589 00:32:38,370 --> 00:32:44,650 แต่เราจะยังคง iterating กับความซับซ้อนของการทำงานของเรา 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 นี้ไม่ได้เป็นสิ่งที่ คุณจะใช้ใน app 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 เพื่อสร้างสตริงยาว 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 มีการใช้เป็น style-- หลามถ้าคุณ 613 00:34:08,730 --> 00:34:13,219 คุ้นเคยกับ 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 สิ่งที่ถ้า gradebook มีจริง มีค่าไม่มีอยู่ภายใน? 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 มิฉะนั้นเราจะกลับมา ศูนย์บอกว่านี้ 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 มันเป็นประเภทคู่ 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 dot dot 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 หมายความว่าฉัน squaring ค่านี้ 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 3.2 ผลงาน 10.24 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 คือการที่กำลังมองหาที่เหล่านี้ สองหน้าที่มี 690 00:38:37,770 --> 00:38:43,600 เพียงสิ่งเดียวที่แตกต่างกัน ซึ่งเป็นค่านี้ในช่วง 691 00:38:43,600 --> 00:38:46,910 ทุกสิ่งทุกอย่างเกี่ยวกับทั้งสอง ฟังก์ชั่นอำนาจของ 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 มันจะยอมรับ พารามิเตอร์ที่เรียกว่า Y ของ Int ประเภท 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 2 ปีซึ่งหมายความว่าค่านี้ ปีในการทำงาน exponentiator นี้ 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 และส่งกลับ Double A 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 เหมือนที่ผมสามารถพูดได้ตกลงกันตอนนี้ฉันต้องการ เพื่อสร้างฟังก์ชั่นใหม่ 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 ใช้ค่าบางอย่างเป็น input และก้อนที่ ค่าที่เราสามารถมองเห็นในบรรทัดด้านล่าง 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 มันสำคัญมากที่จะ การทำความเข้าใจ APIs ได้เป็นอย่างดี 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) หมายความว่าเรากำลังจะ ที่จะมี exponentiator 5 ขึ้นที่นี่ 767 00:43:00,990 --> 00:43:04,160 ดังนั้นนี่เป็นหลักจะเป็น สิ่งเดียวกับ 4 ถึงอำนาจที่ห้า 768 00:43:04,160 --> 00:43:07,200 เพราะเราได้สร้าง exponentiating ทำงานมีอำนาจที่ห้า 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 มีชื่อเพราะพวกเขา ไม่จำเป็นต้องมีหนึ่ง 799 00:44:25,270 --> 00:44:28,700 และดังนั้นในกรณีนี้ใน 7B, เราสามารถหาได้อย่างแม่นยำว่า 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 >> ดังนั้นในครั้งนี้เราไม่ได้ จำเป็นที่จะต้องกำหนดอย่างชัดเจน 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 Armendariz: ที่ที่ถูกต้อง 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 Armendariz: ไม่ซึ่งฉันขอโทษ? 851 00:47:12,702 --> 00:47:15,360 ผู้ชม: Perl ไม่ได้ เงินดอล 0 นี้ดอลลาร์ 1- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: ฉันไม่ได้ ชินกับเพิร์ล 853 00:47:17,318 --> 00:47:21,340 แต่ทุกสิ่งที่กำหนดตัวแปร ขึ้นอยู่กับสัญญาณดอลลาร์ 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 เราจะเห็นคำแนะนำของงูใหญ่ในนั้น 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 และ shoehorns พวกเขาทั้งหมดเข้าด้วยกัน เป็นภาษาหนึ่งในสุด 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 สวิฟท์มี exponentiating ฟังก์ชั่นที่สร้างขึ้นใน 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 และมันก็เป็นไปได้อย่างใดอย่างหนึ่ง อาร์กิวเมนต์โดยเฉพาะ 874 00:48:26,600 --> 00:48:29,320 อ้างอิงที่ $ 0 ที่เป็นประเภทคู่ 875 00:48:29,320 --> 00:48:32,680 มันเป็นไปได้กลับมาประเภทคู่ 876 00:48:32,680 --> 00:48:35,760 แต่คำสั่งที่ส่งกลับ อยู่ในขณะนี้โดยปริยาย 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 ตกลงนี้เป็นที่ดี 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 หมายความว่า 2 ถึงอำนาจที่สาม 910 00:50:29,490 --> 00:50:34,420 [ใจเป่าเสียง] นี้โดย ตัวเองจะทำให้คุณเป็นเช่น 911 00:50:34,420 --> 00:50:37,960 ตกลงกรูซีฉันจะ สวิฟท์ทุกทาง 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 ตกลงใช่? 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 Armendariz: ดังนั้นถ้าคุณกำลังพยายาม เพื่อกำหนดผู้ประกอบการของคุณเอง 925 00:51:15,050 --> 00:51:20,970 มีความเสี่ยงของการกำหนดเป็น มากกว่าหนึ่งผู้ประกอบการที่มีอยู่ 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 ตอนนี้โชคไม่ดีสำหรับ เจ็ดนาทีที่ผ่านมา 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 ดังนั้นในกรณีนี้ผมมีอาร์เรย์ของ integers-- 1, 4, 7, 2, 5, 10, 56 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 ที่เรียบง่ายสำหรับวงที่ iterates มากกว่าทั้งหมดของพวกเขา 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 >> และเราจะทำเช่นเดียวกัน สำหรับสิ่งที่ cubing มัน 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 ในตัวแปรที่เรียกว่าเอฟที่เป็นไป ที่จะใช้คู่และกลับ Double A 969 00:53:40,990 --> 00:53:43,320 และการส่งออกทั้งหมด ฟังก์ชั่นนี้ทั้งหมด 970 00:53:43,320 --> 00:53:47,310 เรียกว่า mapper เป็นไป กลับอาร์เรย์เรียกว่าคู่ 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 ดังนั้นผมจึงไม่ทราบจริงๆสิ่งที่เป็นฉ 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 สามารถที่จะ map ฟังก์ชั่นที่ทั่ว ทุกองค์ประกอบเดียวในรายการ 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 เรากำลังจะผ่านไปที่ อาร์เรย์เข้า mapper ของเรา 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 >> ดังนั้นกรณีนี้เราได้กำหนดไว้ของเรา ฟังก์ชั่นของตัวเองที่เรียกว่า mapper 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 Armendariz: ขวา 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 ในกรณีนี้เรามีทั้ง กู้หน้ามันหรือเรากำลัง cubing มัน 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 >> หากที่กลับมาทำงาน ความจริงจะช่วยให้รายการที่ 1023 00:56:31,990 --> 00:56:36,100 ถ้าฟังก์ชั่นที่ส่งกลับเท็จ มันจะพ่นออกไปที่รายการ 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 แล้วนี้จะกลับจริงซึ่งหมายความว่า รายการที่จะถูกเก็บไว้ในตัวกรองนี้ 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 สิ่งเหล่านี้เป็นเพียงสองคนเท่านั้น รายการที่ถูกเก็บไว้ 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 และแสดงให้คุณเป็นตัวอย่างของวิธีการที่เฉพาะเจาะจง เราสามารถสร้างใน app iOS ของคุณโดยใช้สวิฟท์ 1054 00:58:46,940 --> 00:58:49,040 ดังนั้นเมื่อคุณกำลังทำ นี้คุณจะต้องใช้เวลา 1055 00:58:49,040 --> 00:58:51,990 ดู 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 >> แต่ที่นี่เรามีนี้ app iOS 1060 00:59:07,290 --> 00:59:10,960 และมันเป็น app ง่ายสวยจริงๆ 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 ฉันไปรอบแล้วผ่านของฉัน การตรวจสอบภาพจากเว็บเซิร์ฟเวอร์ของฉัน 1066 00:59:31,680 --> 00:59:32,880 >> ดังนั้นผมจึงมีที่นี่ getNextImage 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 ในคำอื่น ๆ อาจจะเป็นหนึ่งใน สิ่งที่คุณจะต้องทำ 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 เช่น class เป็นสิ่งที่ชั้นเป็นจริง 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 ขอให้สังเกตว่าถ้าเรามีงบ 1094 01:01:17,950 --> 01:01:20,400 โดยวิธีการที่สำคัญอย่างหนึ่ง ถ้าสิ่งที่เกี่ยวกับงบ 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 ที่คุณมีในงบถ้า 1098 01:01:32,360 --> 01:01:38,670 คุณไม่สามารถมีถ้างบ โดยไม่ต้องวงเล็บปีกกาในสวิฟท์ 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 ถ้าคำสั่ง 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 ที่จะทำงานบน IDE CS50 ของฉัน 1113 01:02:26,310 --> 01:02:28,580 ฉันเพิ่งเริ่มต้นอาปาเช่ ใส่แฟ้ม 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 และถ้ามันเป็นศูนย์แล้วฉันจะ พิมพ์ออกมามีข้อผิดพลาดแล้วกลับ 1127 01:03:25,660 --> 01:03:29,970 >> แต่สิ่งที่ช่วยให้ยาม เราทำคือสิ่งที่มาก 1128 01:03:29,970 --> 01:03:34,550 แต่ให้แน่ใจว่ามันเป็น จริงกรณีที่สมาชิก 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 จะช่วยให้คุณดำเนินการด้วย สมาชิกที่ได้รับการกำหนดไว้อย่างถูกต้อง 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 Armendariz: มันเป็นชนิดของ เช่นถ้าอื่นแล้วใช่ 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 Armendariz: เพื่อให้ใกล้ชิด 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 >> ผู้ชม: [ไม่ได้ยิน] หากไม่ได้ศูนย์ 1151 01:05:09,120 --> 01:05:11,470 ดังนั้นจึงเป็นในรายการใช่มั้ย? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: ถ้าข้อผิดพลาดไม่ได้เป็นศูนย์ เพื่อให้ 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 แต่เราจะยอมรับทั้งสาม ข้อโต้แย้งข้อมูลการตอบสนองและความผิดพลาด 1158 01:05:29,850 --> 01:05:33,590 และมันก็เป็นไปได้ที่จะกลับมาเป็นโมฆะดังนั้น มันจะไม่กลับอะไร 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 โดยเฉพาะอย่างยิ่งถ้าคุณไป นักพัฒนาเว็บแอปเปิ้ล Page-- 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 >> [APPLAUSE] 1174 01:06:26,990 --> 01:06:28,026