>> [เล่นเพลง]
>> DAN AMRMENDARIZ: ทุกคน ยินดีต้อนรับสู่การสัมมนา CS50 ที่
การพัฒนา App iOS ของคุณกับสวิฟท์
ฉันแดน Armendariz และฉันเป็นพระอุปัชฌาย์ วิทยาการคอมพิวเตอร์ที่นี่ที่ฮาร์วาร์
>> และชั่วโมงถัดไปเป็นไปได้ ทัวร์ลมกรดของสิ่งที่มากที่สุดเท่าที่
เกี่ยวกับหัวข้อนี้ที่เราสามารถใส่
ผมจะโพสต์ทั้งหมดของรหัสที่มา ที่คุณจะได้เห็นในวันนี้ออนไลน์
เราอาจจะไม่สามารถที่จะ จริงไปทุกอย่าง
ว่าฉันว่าฉัน แสดงในชั่วโมงนี้
แต่อย่างน้อยหวังว่าจะผ่าน ความคิดเห็นของรหัสที่มาที่
คุณจะสามารถที่จะพยายามที่จะคิดออกว่า ตรงที่เกิดขึ้นสำหรับสิ่งเหล่านั้น
ที่เราไม่ได้ค่อนข้างได้รับการ
>> โดยรวม, โครงสร้างของ พูดคุยในวันนี้จะเป็นดังนี้
เราจะเริ่มต้นทำบางขั้นพื้นฐาน ไวยากรณ์กับภาษาสวิฟท์
จะเข้าไปในบางส่วนของที่สูงขึ้น ไวยากรณ์ของภาษาสวิฟท์
เพราะภาษา เป็นจริงที่ทันสมัย​​และ
มีจำนวนมากของระดับสูง คุณสมบัติสิ่งที่เราไม่ได้
เห็นใน C ตลอด CS50 หรือ แม้กระทั่งบางภาษาอื่น ๆ
ที่เราได้เริ่มต้น ใช้ใน CS50 เช่น PHP,
ดังนั้นฉันจะต้องพยายามที่จะ แนะนำยังมีบางหัวข้อที่
ที่เกี่ยวข้องกับภาษาระดับที่สูงขึ้น ที่คุณอาจไม่เห็นในเชิงลึกใน CS50,
แต่คุณจะเห็นในภายหลัง เรียนวิทยาการคอมพิวเตอร์
ดังนั้นมันจะเป็น แน่นชั่วโมง
และโปรดอย่าลังเลที่จะแจ้งให้เรา รู้ว่าถ้าคุณมีคำถามใด ๆ
ดังนั้นหากคุณสนใจ ในการทำการพัฒนา
กับสวิฟท์หรือจริงๆ ใด ๆ ที่พัฒนา app iOS ของคุณ,
มีคู่ของความต้องการ
ก่อนอื่นคุณจะต้องมีการใช้ Mac วิ่งในตัวอย่าง
ที่เราจะต้องใช้ในวันนี้ เป็นรุ่นที่ค่อนข้างใหม่ของระบบปฏิบัติการ
เอ็กซ์ในกรณีนี้ผมใช้ X 10.5
คุณสามารถจะทำงาน 10.11 ถ้าคุณต้องการ
แต่ทุกอย่างที่คุณกำลังจะไป เห็นจะเกี่ยวข้องกับ Xcode 7 และต่อมา
ซึ่งมีรุ่นล่าสุด ของสวิฟท์ซึ่งเป็นสวิฟท์ 2.0
นี้เป็นจริงสวย แตกต่างที่สำคัญ
จำนวนมากของไวยากรณ์มี การเปลี่ยนแปลงอย่างมีนัยสำคัญสวย
ในบางกรณีจากสวิฟท์ 1.0 ซึ่งได้รับการปล่อยตัวเมื่อปีที่แล้ว
ไปสวิฟท์ 2.0 ซึ่ง เพิ่งออกมาฤดูใบไม้ร่วงนี้
ดังนั้นเราจะแสดงให้สวิฟท์ 2.0
จำนวนมากของสิ่งที่ คุณสามารถค้นหาออนไลน์
เมื่อคุณกำลังพยายามที่จะได้รับเพิ่มเติม ข้อมูลเกี่ยวกับความหลากหลายของสิ่งต่างๆ
คุณอาจต้องการอย่างชัดเจน ค้นหาสวิฟท์ 2
มากกว่าสวิฟท์เก่าเพียงธรรมดาที่จะทำให้ ตรวจสอบให้แน่ใจว่าคุณได้รับไวยากรณ์ที่ถูกต้อง
>> ในความเป็นจริงนี้เป็นจริงโดยทั่วไป
มีจำนวนอย่างรวดเร็วของการพัฒนาเป็น ที่เกิดขึ้นในภาษาสวิฟท์
นับตั้งแต่แอปเปิ้ลปล่อยให้มันผมคิดว่า สิ่งที่จะได้รับน้อยกว่าปี
ตอนนี้
และสิ่งที่มีการเปลี่ยนแปลง อย่างมากในช่วงเวลานั้น
และเพื่อไม่ต้องผิดหวัง ถ้าเมื่อคุณมองไปรอบ ๆ
สำหรับหัวข้อในสวิฟท์หรือวิธีการที่จะประสบความสำเร็จ สิ่งที่ใช้โค้ดตัวอย่างบางส่วน
หรือสิ่งที่มันไม่ได้ ทำงานจริงในสวิฟท์ 2.0
ให้แน่ใจว่าคุณกำลังมองหา โดยเฉพาะสำหรับรุ่นที่
เพื่อพยายามที่จะลดผลกระทบที่แตกต่างกัน รุ่นและทุกประเภทของสิ่งเหล่านั้น
>> ฉันจะพยายามที่จะชี้ให้เห็นเพียงแค่บางสิ่งบางอย่าง ที่แตกต่างกับรุ่นเก่า
แต่มันเป็นสิ่งที่ต้องระวัง
ที่อาจเป็นไปได้ หนึ่งในอาการปวดหัวที่ใหญ่ที่สุด
ว่าคุณจะต้องมีสวิฟท์คือการหา โค้ดตัวอย่างที่เก่าแม้เพียง
โดยไม่กี่เดือนพยายามที่จะใช้ ในโครงการที่ทันสมัย​​มากขึ้นของคุณ
และมันก็ก็ไม่ทำงาน
คุณจะได้รับข้อผิดพลาดเรียบเรียงไวยากรณ์ ข้อผิดพลาดทุกประเภทของสิ่งที่บ้า
ดังนั้นเพียงแค่เป็นผู้ป่วยที่มี นั้นและคุณหวังว่าจะ
ได้รับประสบการณ์ที่ดีงาม โดยรวมกับสวิฟท์
>> ตอนนี้คุณสามารถจริง join-- และฉันหวังว่า เรายังคงมีความจริงนี้ year-- นี้
CS 50 ของแอปเปิ้ลแอพพลิเค ทีมพัฒนาซึ่ง
จะช่วยให้คุณสามารถติดตั้งแอพพลิเคใด ๆ ที่คุณสร้างขึ้นบนอุปกรณ์ iOS ของคุณ
ดังนั้นลองมาดูที่ URL นี้ถ้า คุณกำลังสนใจในการทำที่
>> ดังนั้นเพียงแค่คู่ของ สิ่งที่เกี่ยวกับสวิฟท์เอง
มันเป็นภาษาที่รวบรวม
แต่คุณจะเห็นว่าบาง ของคุณสมบัติที่เราใช้
อนุญาตให้นำมาใช้ยังอยู่ในบิต เช่นวิธีการตีความเช่นกัน
>> จำนวนมากของไวยากรณ์ยืม จากซีก็ขึ้นอยู่และเขียนใน C.
และเพื่อให้เราจะเห็นว่า มีจำนวนมากของคบ
จากความรู้ที่มีอยู่ จากซีที่เราสามารถที่จะสวิฟท์พอร์ต
>> แต่มีสิ่งที่ ทำให้มันแตกต่างจากซี
มันถูกพิมพ์อย่างมาก
มีหน่วยความจำอัตโนมัติการจัดการเป็น
คุณไม่ได้จะต้อง ใช้ malloc หรือฟรีทุกที่
มันออกแบบมาสำหรับทั่วไป
ดังนั้นในคำอื่น ๆ ที่คุณสามารถใช้มันใน ทุกประเภทของความสำเร็จจากแอปเปิ้ลดู
กับ iPhone ทุกทางขึ้นไปยัง OS X และ แม้บางเซิร์ฟเวอร์แม้สคริปต์
แต่เราจะเห็นว่า การสนับสนุนสำหรับการเขียนสคริปต์
เป็นไม่มากยังเป็น มันมีอยู่ในภาษาอื่น ๆ
ดังนั้นส่วนใหญ่มีแนวโน้มที่คุณจะใช้ นี้โดยเฉพาะสำหรับการพัฒนา
บน Mac หรือ iPhone ของคุณ
>> และก็จะมีจำนวนมากของคุณสมบัติที่ทันสมัย
และจำนวนมากของสิ่งเหล่านี้เป็นสิ่งที่ เราจะพยายามที่จะอยู่ในวันนี้
แต่ยังมีหัวข้อของเราที่ตรงไปตรงมา เราสามารถอุทิศทั้งหลักสูตร
ในความเป็นจริงงาน 51 ซึ่งเป็น ภาคการศึกษาที่นำเสนอต่อไป
มุ่งเน้นมากในหัวข้อเหล่านี้ ที่อธิบายไว้ด้านล่าง
เพื่อให้คุณสามารถใช้จ่ายภาคการศึกษาทั้งหมด การทำความเข้าใจสิ่งเหล่านี้
แต่เราจะพยายาม ที่จะได้รับผ่านพวกเขา
อย่างน้อยพอที่คุณ สามารถเข้าใจสิ่งที่เป็น
ที่เกิดขึ้นเมื่อคุณมอง ในโปรแกรมสวิฟท์
และสามารถที่จะตัดทางของคุณ ผ่านโครงการสุดท้าย
>> หนึ่งในวิธีที่ดีที่สุดที่คุณสามารถ ได้รับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
ตรงไปตรงมาเป็นเพียงแค่ผ่านแอปเปิ้ล ให้เอกสารสำหรับสวิฟท์
มีจำนวนมากของ API ครับ ที่มีอยู่
และนี่คือฐานบ้านที่ดีสำหรับคุณ ที่จะมองหาสิ่งที่เฉพาะเจาะจงที่คุณ
ต้องการที่จะทำอย่างไรกับ API ที่เกี่ยวข้องกับ iOS
ถ้าคุณต้องการที่จะใช้กล้องสำหรับ ตัวอย่างเช่นคุณสามารถเริ่มมองหาที่นี่
และยังใช้ Google และกอง มากเกินที่คุณจะได้ตามปกติ
>> คำถามใด ๆ เกี่ยวกับเรื่องนี้ ก่อนที่เราจะกระโดดมีอะไรบ้าง?
ทั้งหมดขวา
ขอย้าย
>> ดังนั้นก่อนที่ฉันมี จำนวนไฟล์ตัวอย่าง
และฉันจะพยายามที่จะก้าว ผ่านพวกเขาอย่างรวดเร็ว
นี้เป็นไฟล์สวัสดีโลกสำหรับสวิฟท์
มันง่ายมาก
มีความคิดเห็นทางมากขึ้น กว่าที่มีรหัสที่เกิดขึ้นจริง
ขอให้สังเกตรหัสที่เกิดขึ้นจริงที่ ด้านล่างสุดในบรรทัดที่ 14
มันบอกว่าพิมพ์
และจากนั้นก็โทรฟังก์ชั่น
เรากำลังผ่านเป็นมัน สตริงที่เรียกว่าสวัสดี CS50
ขอให้สังเกตว่าไม่มีอัฒภาค
ขอให้สังเกตว่าไม่มี int หลัก
ไม่มีผู้ใดเป็นของ cruft ที่เรามีกับซี
เมื่อเราใช้สวิฟท์ในลักษณะนี้ ซึ่งเขียนเพียงในแฟ้มข้อความ
และเก็บไว้ในคอมพิวเตอร์ของฉันแล้ว ฉันสามารถรวบรวมและเรียกใช้
>> ขอให้สังเกตว่าที่นี่ฉัน ไม่ได้ใช้ CS50 IDE
นี้อนุมานว่าผม การทำงานและการที่ฉันบน OS X,
และที่ฉันได้ Xcode ติดตั้งแล้ว บนเครื่องนี้ในการสั่งซื้อสำหรับ
การทำงานจริง
แต่นี่เป็นเพียงแฟ้มข้อความปกติ ว่าแล้วเราก็สามารถรวบรวมและแก้ไข
ดังนั้นเรามาดูวิธีการใช้งานได้จริง
หากฉันต้องการที่จะรวบรวมมันได้หรือไม่
swiftc 1.swift
หลังจากครู่หนึ่งหรือสองก็ จะเห็นว่าเรามีตอนนี้
รวบรวมนี้ลงในไฟล์ที่เรียกว่า 1
และตอนนี้เราได้พิมพ์ CS50 ของเรา โปรแกรมของเราค่อนข้างสวัสดีโลก
>> ขอให้สังเกตสิ่งอื่น ๆ ที่หนึ่ง ดีว่าโดยปกติ
เราไม่ได้มีที่จะใส่ บาร์ / n พิมพ์บรรทัดใหม่
โดยค่าเริ่มต้นฟังก์ชั่นการพิมพ์ใน สวิฟท์จะพิมพ์บรรทัดใหม่สำหรับคุณ
คุณสามารถส่งผ่านตัวเลือกเพิ่มเติม พารามิเตอร์ที่จะบอกว่ามันไม่ได้ที่จะทำเช่นนั้น
แต่ Google สำหรับข้อมูลเพิ่มเติมเกี่ยวกับที่
โดยค่าเริ่มต้นจะทำเส้นพิมพ์
>> สิทธิทั้งหมดจึงขอย้าย แล้วบางสิ่งอื่น ๆ
ดังนั้นวิธีที่เราสามารถกำหนดตัวแปรจริง?
เราสามารถทำที่ใช้ หนึ่งในสองวิธี
และคนที่ฉันต้องการจะบอกคุณ เกี่ยวกับความหมายแรกคือปล่อยให้เรื่องนี้
และนี่เป็นสิ่งที่สำคัญ เพราะได้อย่างมีประสิทธิภาพ
สิ่งที่เรากำลังทำคือการกำหนดอย่างต่อเนื่อง
พวกเราจะไปสร้างตัวแปร หรือมากกว่าชื่อที่เรียกว่าค่าคงที่
ให้ไป data-- บางอย่างใน กรณีนี้สตริงแดน
แต่ด้วยการใช้ปล่อยให้เรื่องนี้ คำหลักที่เรากำลังพูด
ที่ variable-- นี้หรือ อีกครั้ง constant-- เรียกว่า
ชื่อที่ไม่เคยไปจะมีการเปลี่ยนแปลง
มันเป็นไปได้ที่ไม่เปลี่ยนรูปตลอด ระยะเวลาของโปรแกรมนี้
หรือตลอด ระยะเวลาของบริบท
ตัวแปรที่มีอยู่
>> นี่คือสิ่งที่สำคัญจริงๆว่าเมื่อ คุณมีข้อมูลบางอย่างที่ไม่ได้เป็น
จะเปลี่ยนในโปรแกรมของคุณ และคุณจะเห็นความหลากหลายของตัวอย่าง
เกี่ยวกับเมื่อเราต้องการใช้ ให้กับไวยากรณ์อื่น ๆ
มันเป็นสิ่งสำคัญที่คุณใช้ให้ เป็นไปได้เพราะแจ้งนี้
ภาษาที่มันเป็น ไม่ได้ไปจะมีการเปลี่ยนแปลง
และเป็นจริงสามารถดำเนินการ จำนวนมากของการเพิ่มประสิทธิภาพ
เพื่อปรับปรุงความเร็วและ ความปลอดภัยของโปรแกรม
และโดยความปลอดภัยผมหมายถึงไม่ปล่อยให้ ความผิดพลาดมันมีข้อผิดพลาดบ้า
ที่เราอาจจะ คุ้นเคยกับการเห็นใน C.
>> แล้วเราสามารถใช้แก้ไขสตริง เพื่อแค็ปซูลนี้ภายในสตริง
ดังนั้นเราจะเห็นในเรื่องนี้ เส้นพิมพ์พิมพ์สวัสดี
แล้วใช้ parens เปิดทับขวา, แล้วชื่อของตัวแปรของฉัน
ในกรณีนี้อย่างต่อเนื่อง ปิดวงเล็บ
ฉันเป็นหลักแล้ววาง เนื้อหาที่มีชื่อเรียกว่าตัวแปรนี้
ภายในของสตริงแล้ว พิมพ์ผลที่มี
>> ไม่มีการเปลี่ยนแปลงอีกคนหนึ่งที่จะไฟล์นี้ ซึ่งเป็นที่ฉันมีที่ด้านบนมาก
ใส่ในบรรทัด shebang ซึ่ง พื้นเพียงระบุ
ที่ฉันต้องการที่จะใช้ ล่ามสวิฟท์ซึ่ง
หมายความว่าผมไม่จำเป็นต้อง รวบรวมโปรแกรมนี้โดยเฉพาะอย่างยิ่ง
ฉันเพียงแค่สามารถเรียกใช้มันเหมือนสคริปต์ของตัวเอง
แต่นี้คือในกรณีนี้ที่อยู่เบื้องหลัง ฉากที่ถูกรวบรวมแล้ว
การทำงานเป็น
มันเป็นเพียงแค่มองไม่เห็นเรา
>> สิทธิทั้งหมดจึงขอย้าย
เพื่อให้มีบิตของการใช้กลอุบาย ที่เกิดขึ้นก่อน
ฉันพบว่าฉัน สามารถกำหนดค่าคงที่
และผมจะให้ข้อมูลบางอย่างที่จะทำมัน
แต่ในกรณีนี้สังเกตเห็นว่าฉันไม่ได้ จริงระบุชนิดของข้อมูล
ว่ามันเป็น
และนั่นเป็นเพราะ คอมไพเลอร์สวิฟท์สามารถ
สรุปชนิดของข้อมูลที่ใช้เพียง กับข้อมูลที่ผมใส่ลงในนั้น
เพราะมันรู้ว่าโดยการประเมินนี้ ตัวแปรขวาที่นี่ในข้อมูลนี้
ที่นี่ก็รู้ว่ามันเป็นสตริง
และเพื่อให้ชื่อนี้คงที่ดังนั้นจึงเป็นเรื่อง จะเป็นสตริงเช่นกัน
>> แต่เรายังสามารถเป็นที่ชัดเจน เกี่ยวกับประเภทที่เป็น
เราจะไปที่จะใช้สำหรับ ค่าคงที่หรือตัวแปร
โดยใช้รูปแบบนี้ instead-- ให้ String ลำไส้ใหญ่ชื่อเท่ากับ
แดนซึ่งในกรณีนี้หมายถึงเรา จะกำหนดชื่อเรียกอย่างต่อเนื่อง
มันจะเป็นชนิดสตริง
และความคุ้มค่าเป็นไปได้แดน
ตอนนี้วิธีการอื่น ๆ ที่ เราสามารถสร้าง variables--
และเหล่านี้เป็นตัวแปรที่ไม่แน่นอนซึ่ง หมายความว่าเราอยู่ในความเป็นจริงที่เกิดขึ้น
การเปลี่ยนแปลงเนื้อหาของพวกเขาบางครั้ง ในช่วงระยะเวลาของบริบท
ตัวแปรที่ defined-- เรา ใช้คำหลัก var แทนให้
แต่อีกครั้งโดยค่าเริ่มต้นถ้าคุณรู้ว่า ที่คุณต้องจัดการกับข้อมูลที่
พยายามที่จะใช้สำหรับให้ ปรับปรุงประสิทธิภาพการทำงาน
>> ในกรณีนี้ผมสามารถแล้ว ระบุชนิดของข้อมูล
ที่เราคาดว่าจะเป็นภายในของ ตัวแปรใหม่นี้เรียกว่าฉลาก
มันจะเป็นสตริง
และเรากำลังจะไปแล้ว concatenate สองสายด้วยกันสวัสดีสตริง
และสตริงตัวแทนจาก ตัวแปรหรือค่อนข้างคงที่ชื่อ
>> ดังนั้นนี่เป็นสิ่งที่ดีเพราะ จะค่อนข้าง PHP เหมือนเราว่า
มีสตริงที่ง่ายมาก
เราไม่ได้มีให้โดยอัตโนมัติ ใช้ประเภทของการจัดการหน่วยความจำใด ๆ
เพื่อเพิ่มขนาดและทำ การเรียงลำดับของสิ่งที่ตลกมีผู้ใด
นี้ทำงานในขณะที่เราคาดว่าจะได้จริง
>> สิทธิทั้งหมดคำถามใด ๆ เกี่ยวกับเรื่องนี้?
>> ตอนนี้เหตุผลอื่น ๆ ที่ เราต้องการให้คุณมีความสามารถใน
เพื่อให้สามารถกำหนดสิ่งที่ ประเภทของตัวแปรข้อมูล
เป็นเพราะบางครั้งเราทำไม่ได้ ต้องการที่จะเริ่มต้นตัวแปร
มีข้อมูลบางอย่างที่ จุดของความหมาย
ดังนั้นในกรณีนี้สมมติว่า ที่ฉันต้องการที่จะเริ่มต้นป้อน
เกรดบางอย่างในหนังสือเกรด
ดีฉันรู้ว่าหนึ่งใน ตัวแปรที่ฉันต้องการที่จะ
เป็นไปได้เกรดไม่แน่นอน
และเรายังรู้ว่าเรา ต้องการให้เป็นจำนวนเต็ม
แต่บางทีเราทำยังไม่ได้ มีชั้นประถมศึกษาปีที่สามารถใช้ได้ที่
>> ในสวิฟท์ที่คุณต้อง กำหนดประเภทของข้อมูล
ที่มีความเกี่ยวข้องกับ ตัวแปรหรือให้คงที่
ก่อนที่คุณจะสามารถจริง ตัวแปรที่ใช้
เพราะมันเป็นพิมพ์มั่น คุณจะต้องเชื่อมโยงประเภท
กับตัวแปรเหล่านี้
>> ดังนั้นในกรณีนี้ถ้าผมไม่ถูกต้อง เริ่มต้นครั้งแรกที่มีค่าบางอย่าง
แล้วผมต้องบอกว่าสิ่งที่สวิฟท์ ผมคาดว่าชนิดของข้อมูลที่จะเป็น
และก็จะยังคงอยู่ ประเภทข้อมูลเดียวกัน
ตลอดประวัติศาสตร์ของโปรแกรมนี้
>> ตอนนี้คุณอาจถูกล่อลวงโดยเร็ว ผมได้สร้างตัวแปรเกรดนี้
และให้มัน จำนวนเต็ม 100 ตอนนี้ถ้าฉัน
ต้องการที่จะพยายามที่จะเชื่อม สตริงที่มีจำนวนเต็มว่า
อาจถูกล่อลวงไปยังคงใช้ ว่าผู้ประกอบสตริง
เหมือนที่เราทำเพียงไม่กี่บรรทัดก่อน
แต่น่าเสียดายที่ นี้จะจริงไม่ได้
ทำงานเพราะคุณเป็น เป็นหลักปฏิบัติ
การดำเนินการในสองประเภทที่แตกต่างกัน
>> ตอนนี้เป็นความแตกต่างจากคนอื่น ๆ ภาษาเช่น PHP ที่เป็นจริง
Goosey loosey กับประเภทของชนิดของพวกเขา
พวกเขากำลังเช่นเดียวใช่ สิ่งที่ฉันไม่สนใจ
เพียงแค่ให้ฉันหนึ่งชนิด บางทีฉันอาจจะทำสิ่งที่ถูก
>> ในกรณีนี้สวิฟท์เป็น ที่เข้มงวดมากเกี่ยวกับชนิด
ที่คุณจะจัดการกับ
ผู้ประกอบการบวกนี้ หรือผู้ประกอบการเรียงต่อกัน
มีหลักคู่ของ ตัวเลือกที่เป็นไปได้ที่แตกต่างกัน
คุณสามารถทำได้บวก กับจำนวนเต็มหรือคุณ
สามารถทำสตริงและ บางทีอาจจะเป็นบางสิ่งบางอย่างอื่น ๆ เช่นกัน
แต่ถ้าผู้ประกอบการที่ไม่รู้จัก สิ่งที่อยู่บนด้านข้างของมันทั้งสอง
หรือมากกว่าการรวมกันของเหล่านั้น ทั้งสองประเภทไม่ได้เป็นสิ่งที่มันคาดหวัง
แล้วมันจะก่อให้เกิดความล้มเหลว
>> ดังนั้นในกรณีนี้มันหมายความว่าอะไร ที่จะมีสตริงบวกจำนวนเต็มหรือไม่?
ดีในบริบทของ นี้เราอาจต้องการ
สำหรับการดำเนินการ concatenation สตริง
แต่แน่นอนคอมพิวเตอร์ ไม่ได้มีการจัดเรียงของบริบทที่
และเพื่อให้เราจำเป็นต้องให้ ข้อมูลเพิ่มเติมที่
จะปล่อยให้มันรู้ว่ามัน คือการที่เราต้องการที่จะทำ
>> ดังนั้นในคำอื่น ๆ ที่ความเป็นจริง สวิฟท์ที่มีการพิมพ์มั่น
หมายความว่าคุณต้องทำ เล็กน้อยในการทำงานเพิ่มเติม
ที่จะได้ไปทำงาน วิธีการที่คุณต้องการ
แต่ผลที่ตามมาก็จะปลอดภัยกว่า
และเมื่อคุณมีการใช้ เข้าบัญชีประเภทเหล่านั้น
เพียงแค่เริ่มต้นสิ่งที่ตรงไปตรงมา ที่จะทำงานสวยดี
>> ดังนั้นในกรณีนี้เราก็จะ ดำเนินการสตริง
โดยหล่ออย่างชัดเจน จำนวนเต็มสตริง
โดยการตัดมันในครั้งนี้ ฟังก์ชั่น S ทุนสตริง
แล้วใช้ concatenation สตริง ผู้ประกอบการที่จะปรับเปลี่ยนตัวแปรฉลากของเรา
แล้วพิมพ์ออกมา
>> เพื่อให้ห่างไกลที่ดีเพื่อ?
สิทธิทั้งหมดขอย้าย
>> ขณะนี้มีความหลากหลายของข้อมูล ชนิดที่เราสามารถใช้ในสวิฟท์
ในขณะที่คุณได้กลายเป็นที่คุ้นเคยกับการ เราสามารถสร้างอาร์เรย์ที่ไม่แน่นอน
และอาเรย์ที่สามารถ มีชนิดเดียว
>> ดังนั้นในกรณีนี้เรากำลังจะสร้าง อาร์เรย์ไม่แน่นอนของจำนวนเต็มซึ่ง
เราจะเรียกเกรดและเราจะสามารถ ในการจัดเก็บที่อยู่ในวงเล็บเหลี่ยมนี้
รูปแบบที่คุณได้เติบโตคุ้นเคย ในความหลากหลายของภาษาอื่น ๆ
แต่สังเกตเห็นว่าที่นี่เรา กำหนดสองสิ่ง
เกรดเป็น variable-- ไม่แน่นอน เราไม่ใช้คำหลักให้
ดังนั้นนั่นหมายความว่าเราสามารถปรับเปลี่ยนแล้ว เนื้อหาของอาร์เรย์นี้
มันเป็นประเภท Int อาร์เรย์ และเราสามารถบอกได้ว่า
ขึ้นอยู่กับวงเล็บเหล่านี้ที่นี่
>> ตอนนี้หนึ่งในสิ่งที่ดี เกี่ยวกับเรื่องนี้คือการที่เรา
มีการเข้าถึงมาก ข้อมูลเพิ่มเติม
เกี่ยวกับอาร์เรย์เพียงแค่ใช้ บางเครื่องหมายจุดที่เรียบง่าย
ดังนั้นตัวอย่างเช่น grades.count ให้กับเรา
จำนวนรายการที่มีอยู่ในที่ อาร์เรย์ซึ่งเราก็จะสามารถเข้าถึงสวย
ได้อย่างง่ายดายเพียงแค่ใช้เครื่องหมายจุดที่
>> ถ้าคุณต้องการที่จะเพิ่มเพิ่มเติม รายการที่จะอาร์เรย์นี้
คุณไม่สามารถทำรูปแบบของ PHP ที่คุณก็ชัดเจนกำหนด
ที่ดัชนีที่กำหนดค่าบางอย่าง ที่คุณต้องการแทรก
แต่ให้ใช้ผนวก วิธีการในรูปแบบอาร์เรย์
ผนวกรายการที่ 95 ในรายการนี​​้
>> ดังนั้นตอนนี้อาร์เรย์นี้มีดังต่อไปนี้ contents-- 100, 0, 90, 85
และตอนนี้เราได้ผนวก 95 ที่ดี
>> มีวิธีการอื่น ๆ เราสามารถผนวกสิ่ง
คุณสามารถใช้จริง ผู้ประกอบการบวก
ซึ่งจะถูกตีความว่าเป็น การดำเนินการอาร์เรย์ผนวก
และจากนั้นคุณสามารถผนวกอีก อาร์เรย์ที่มีเนื้อหาเป็น 70 และ 80,
ไปยังอาร์เรย์ที่
ดังนั้นตอนนี้เรามี เนื้อหาในตัวแปรนี้
grades-- 100, 0, 90, 85, 95, 70, และ 80
นี่เป็นเพียงประโยคเล็ก ๆ น้อย ๆ ที่ดี น้ำตาลที่สวิฟท์ให้กับเรา
>> ดังนั้นถ้าเราต้องการที่จะรวม เกรดเราอาจจะ
จะต้องการที่จะย้ำ มากกว่าทุกรายการในวงนี้
และเราไม่ได้มีในสวิฟท์, ความคิด ของสำหรับวงที่คุณคาดหวัง
แต่วิธีการที่เราแสดง ช่วงแตกต่างกันเล็กน้อย
ดังนั้นในกรณีนี้เพื่อ รวมทุกอย่างที่เราจะ
จะสร้างชั่วคราว ผลรวมเรียกว่าตัวแปรเพื่อให้เรา
ในการรักษานับนี้
>> และแจ้งให้ทราบสำหรับเรา ห่วงการก่อสร้างที่นี่
สำหรับดัชนีใน 0 .. <grade.count
ดังนั้นการก่อสร้างนี้, 0 .. <grades.count คือการดำเนินการช่วงที่เราเป็น
บอกว่าเรากำลังจะสร้าง ช่วงของจำนวนเต็มตั้งแต่ 0 ขึ้น
แต่ไม่รวม grades.count
ดังนั้นนี่จะเป็น 0, 1, 2, 3, 4, 5 จนถึงอย่างไรก็ดีหลายคนหนึ่ง
ก่อนที่จะ grades.count
>> ดังนั้นนี่คือแตกต่างจากวิธีการที่เรา โดยทั่วไปจะใช้สำหรับลูป
ที่คุณจะมีดัชนีบาง ตัวแปรตั้งค่าเท่ากับ 0 ในตอนแรก
แล้วบูรณาการจนบาง ค่าน้อยกว่านับจากรายการ
ในอาร์เรย์ที่
>> จึงมีการปรับเปลี่ยน ในการนี​​้จริง
ซึ่งช่วยให้เราได้อย่างง่ายดายมาก การตั้งค่าที่แตกต่างกันของช่วง
หากคุณเปลี่ยนช่วงนี้ จุดสามจุด, 0 ... grade.count,
นี้เป็นช่วง 0 เพื่อ grades.count รวม
หมายความว่าตัวเลขที่ยังเป็น รวมแล้วในช่วงนั้น
>> แต่นี้เป็นประโยชน์มาก สิ่งที่แน่นอนเหล่านี้
เมื่อเรามีการดำเนินการ ซ้ำมากกว่าห่วง
เพราะดัชนีเหล่านี้จะเป็นศูนย์การจัดทำดัชนี ที่เราได้เห็นในภาษาอื่น ๆ
ได้เป็นอย่างดี
คำถามใด ๆ เกี่ยวกับเรื่องนี้สำหรับวง?
>> ดังนั้นจึงมีความหมายโดยนัย ของตัวแปรดัชนีนี้
ที่มีค่าเริ่มต้นที่ 0 ยังคงย้ำในวงทุกคน
จะเพิ่มขึ้น 1 จนถึงจุด ที่เท่ากับ grades.count,
จุดที่วงถูกยกเลิก
>> ขอให้สังเกตว่าในสายของเรา แก้ไขที่นี่
เราจริงสามารถดำเนินการบางอย่างง่าย กิจวัตรเพื่อค่าเหล่านั้น
ดัชนีบวก 1 ดังนั้นจะจริง ดำเนินการผลรวมของมูลค่าที่
เนื่องจากดัชนีใน กรณีนี้จำนวนเต็ม
และที่จุดนั้นก็จะ แล้วแปลงเป็นสตริง
และสอดแทรกเข้าไปในสายนี้ที่นี่ และพิมพ์ออกมาในขณะที่เราคาดว่าจะได้ .
>> และสิ่งที่ดี เกี่ยวกับอาร์เรย์ที่นี่คือ
ที่เรายังสามารถที่จะมี เรียกค่าและการตั้งค่า
โดยใช้สัญกรณ์เป็นวงเล็บเหลี่ยม ที่เราเคยเห็นในภาษาอื่น ๆ ได้เป็นอย่างดี
>> สิทธิทั้งหมดดังนั้นจากที่นี่เราตอนนี้ คำนวณผลรวมของทั้งหมดของเกรดของเรา
ตอนนี้การเรียงลำดับของต่อไป ขั้นตอนจะเป็น
สำหรับการดำเนินการส่วนหนึ่งที่จะหา ออกเกรดเฉลี่ยของเหล่านั้น
แต่สิ่งที่สำคัญ ที่นี่คือสิ่งที่เกิดขึ้นที่
คือผลรวมนี้อาจจะเป็นจำนวนเต็ม
แต่เราจำเป็นต้องดำเนินการบางอย่าง การเรียงลำดับของการแบ่งคู่
และนี่เป็นไปได้ สิ่งสำคัญอย่างยิ่งเมื่อ
เราต้องการที่จะดำเนินการนี​​้ เพราะสิ่งที่เรากำลังพูดถึง
คือการที่เราต้องการจริง ดำเนินการในส่วนที่สองคู่
และอีกครั้งเพราะสวิฟท์ พิมพ์แข็งแกร่งมาก
เราต้องตั้งค่าอย่างชัดเจนของทั้งหมด รายการที่จะคู่ก่อนที่เราจริง
ดำเนินการที่
>> ดังนั้นเพื่อที่เราจะ ดำเนินการส่วนคู่
มันไม่เพียงพอสำหรับการเพียงหนึ่ง ในรายการเหล่านั้นจะเป็นคู่
ทั้งของพวกเขาจำเป็นต้องเป็น คู่เพื่อให้รวดเร็ว
เพื่อให้แน่ใจว่านี้ คือสิ่งที่เราต้องการจะทำ
ดังนั้นเราจะ typecast อย่างชัดเจนแล้ว ผลรวมที่เราได้คำนวณข้างต้น
และจำนวนของคะแนนที่จะคู่และ แล้วดำเนินการและร้านค้าที่
ที่เป็นตัวแปรใหม่นี้หรือมากกว่า นี้คงใหม่ที่เรียกว่าโดยเฉลี่ยแล้ว
ซึ่งจะมีสิ่งที่ชนิดที่คุณคิด?
คู่ใช่
ดังนั้นในกรณีนี้เรา ไม่ได้มีการระบุว่า
เพราะมันสามารถสรุปจาก การดำเนินการสิ่งที่ประเภทของข้อมูลเฉลี่ย
จะ.
และสวิฟท์โดยทั่วไปที่ดีงาม เกี่ยวกับความสามารถในการสรุปประเภท
>> คุณต้องการที่จะเห็นนี้ ทำงานหรือฉันสามารถย้าย?
ฉันต้องการที่จะเก็บไป
คำถามใด ๆ เกี่ยวกับการใด ๆ นี้?
ที่ดี
>> ตอนนี้เรากำลังจะเริ่มต้นที่จะได้รับ ฟังก์ชั่นการกำหนด stuff-- ดี
และคู่ของประเภทอื่น ๆ ที่มี ที่ไม่ซ้ำกับสวิฟท์ที่คุณไม่ได้
เห็นในภาษาอื่น ๆ จนถึงจุดนี้
แต่พวกเขามีอยู่ในที่อื่น ๆ ภาษาที่คุณอาจพบในภายหลัง
ดังนั้นก่อนถ้าคุณต้องการ เพื่อกำหนดฟังก์ชั่น
ที่คุณกำหนดด้วยคำว่าขี้ขลาด ฟังก์ชั่นและจากนั้นชื่อของฟังก์ชั่น
และจากนั้นในวงเล็บขัดแย้ง ที่คุณต้องการฟังก์ชั่นที่จะยอมรับ
ข้อโต้แย้งยังต้อง specify-- generally--
นอกจากนี้ยังต้องระบุชนิดของข้อมูลที่ พวกเขาจนกว่าพวกเขาจะสามารถสรุป
และเราจะเห็นว่าเล็ก ๆ น้อย ๆ ข้อแม้เพียงนิด ๆ หน่อย ๆ
>> ดังนั้นในกรณีนี้เรามี ฟังก์ชั่นที่เรียกว่า printGradeCount
เรากำลังจะไปรับ variable-- หรือมากกว่าในกรณีนี้
constant-- เรียก Gradebook
และมันก็เป็นไปได้ของ อาร์เรย์ชนิดของจำนวนเต็ม
ขณะนี้มีบางสิ่งบางอย่าง ที่สำคัญที่นี่จริงๆ
ที่ฉันต้องการให้คุณเข้าใจ
นั่นคือว่าโดยปกติขัดแย้งเหล่านี้ ปัจจัยการผลิตที่มีฟังก์ชั่นนี้
ที่กำหนดไว้กับคำหลักที่ช่วยให้ปริยาย ซึ่งหมายความว่าฉันไม่สามารถปรับเปลี่ยนนี้
ตัวแปร Gradebook ที่นี่
และที่จัดเรียงของการทำให้ความรู้สึก เพราะคุณกำลังในการส่งผ่านข้อมูล
และคุณอาจจะไม่ต้องการ จะมีการเปลี่ยนแปลงจากใต้คุณ
มันเป็นไปได้ที่จะพูดถึงอย่างชัดเจน ว่านี่คือตัวแปรโดยการวาง
คำหลัก var ที่นี่
แต่ที่เป็น gotcha ที่เราได้ คนสังเกตเห็นได้กระทำในอดีตที่ผ่านมา
ที่พวกเขาคิดว่ามันจะ จะเป็นตัวแปรเมื่อในความเป็นจริงมัน
เป็นค่าคงที่
>> สิทธิทั้งหมดเพื่อให้ที่นี่แล้วในกรณีนี้ เราไม่ได้ระบุประเภทผลตอบแทนใด ๆ
เราจะแสดงให้คุณเห็นวิธีการทำ ที่เพียงสักครู่
แต่สังเกตเห็นว่าที่นี่เรามี เพียงง่ายๆถ้าเงื่อนไข
ถ้าสมุดคะแนนคือ ที่ว่างเปล่าซึ่งในกรณีนี้
เป็นเพียงทรัพย์สินของจำนวนเต็มนี้ อาร์เรย์แล้วเราพิมพ์ออกมาบางสิ่งบางอย่าง
มิฉะนั้นเราทำอย่างอื่น
>> ตรงไปตรงสวยจนถึงขณะนี้ผมคิดว่า
แต่หยุดฉันถ้าคุณมีคำถามใด ๆ
>> ตอนนี้ฟังก์ชั่นนี้โดยเฉลี่ยแล้วยังใช้ ข้อโต้แย้งบางส่วนหรือมากกว่าหนึ่งอาร์กิวเมนต์
ซึ่งเป็น Gradebook และในครั้งนี้ เป็นไปเพื่อกลับมาเป็นประเภทคู่
เพราะมันเป็นคอมพิวเตอร์ ค่าเฉลี่ยและก็
จะกลับมาที่จริง คำนวณเฉลี่ยกับสายโทรศัพท์
>> ในกรณีนี้เราระบุ กลับชนิดหลังจากลูกศร
และนี่อาจจะรู้สึก ชนิดของแปลกในตอนแรก
คุณได้เติบโตคุ้นเคย การตั้งผลตอบแทน
ก่อนที่จะพิมพ์ชื่อของฟังก์ชั่น
แต่ถ้าคุณคิดว่านี้ ในแง่ของคณิตศาสตร์
เช่นเมื่อคุณมีคณิตศาสตร์ ที่กำหนดฟังก์ชั่น
คุณมีฟังก์ชั่นบางอย่าง ปัจจัยการผลิตและจะผลิตออก
และนั่นคือสิ่งที่ นี้ควรจะเลียนแบบ
และมีคู่ของภาษาอื่น ๆ ที่มีไวยากรณ์ที่คล้ายกันเป็นอย่างดี
แต่อาจไม่มีใครว่า คุณเคยเห็นใน CS50
แต่ก็ยังคงไม่สับสนโดยมัน
ลูกศรหมายถึงสิ่งที่เกิดขึ้น จะถูกส่งกลับในกรณีนี้
ตกลงดังนั้นวิธีการที่เราจะไป ในการคำนวณค่าเฉลี่ยนี้หรือไม่?
ดีถ้าสมุดคะแนน เป็นที่ว่างเปล่าดีแล้วเรา
จะกลับ 0 ซึ่งอาจจะ เป็นวิธีที่เหมาะสมในการรักษานี้
ผมไม่ทราบว่าขอมา กลับไปว่าในนิด ๆ หน่อย ๆ
นี้อาจจะไม่จริง จะเป็นวิธีที่เหมาะสม
ในการคำนวณค่าเฉลี่ยถ้า เรามี gradebook มีที่ว่างเปล่า
>> จากนั้นเราก็จะดำเนินการบวกของเรา
ขอให้สังเกตว่าที่นี่เราจริง มีรุ่นอื่นของ
สำหรับวงซึ่งช่วยให้เราสามารถย้ำ มากกว่าทุกรายการเดียวในอาร์เรย์
และสถานที่ที่แต่ละองค์ประกอบ ตัวแปรเข้าไปในตัวของมันเอง
โดยการระบุเกรดใน gradebook มีสิ่งที่เรากำลังพูดถึง
คือการที่เรากำลังจะไปโดยปริยาย สร้างคงใหม่ที่เรียกว่า
ชั้นประถมศึกษาปีที่จะเป็นตัวแทน ทุกรายการที่ไม่ซ้ำกันในสมุดคะแนน
ทุกครั้งที่สำหรับวง iterates
ดังนั้นครั้งแรกที่ มันทำงานเกรดจะ
เป็นรายการแรกในสมุดคะแนน
ครั้งที่สองก็จะเป็น รายการที่สองเพื่อ ๆ และอื่น ๆ
จนกว่าจะมี Gradebook หมดตัวเองขององค์ประกอบ
จากนั้นเราก็จะสามารถที่จะสรุปว่า ชั้นประถมศึกษาปีเข้าไปในตัวแปรบวกของเรา
และผลตอบแทนเ​​ฉลี่ยของเรา ในขณะที่เราเคยเห็นมาก่อน
ตกลงคำถามใด ๆ ?
ใช่?
ผู้ชม: ฉันมีสองคำถาม
จำนวนหนึ่งสมมุติฐานสามารถ คุณเรียกจำนวนเต็มในนี้?
ไม่จำเป็นต้องเป็น สองคือการที่ถูกต้องหรือไม่
DAN AMRMENDARIZ: คุณสามารถ คำถามที่ซ้ำ?
ผู้ชม: ฉันสามารถทำ จำนวนเต็มเป็นค่าเฉลี่ย?
DAN AMRMENDARIZ: คุณสามารถ ทำจำนวนเต็มเป็นเฉลี่ยแล้ว?
ดังนั้นกลับจำนวนเต็ม เฉลี่ยแทนคู่?
>> ผู้ชม: Return-- คุณ มีว่าตอนนี้ดังต่อไปนี้
DAN AMRMENDARIZ: ที่นี่กลับ 0.0?
ผู้ชม: ใช่เพียงแค่กลับ 0
ดังนั้นมันจะเป็นได้ทั้ง 80 หรือ 85 แต่ไม่ได้ 85.2
>> DAN AMRMENDARIZ: ดังนั้นในกรณีที่ เพื่อให้มีวิธีที่ต่างกันทั้งคู่
ที่จะตอบว่า
ผมขอตอบคำถามเหล่านี้ในการสั่งซื้อ
ดังนั้นถ้าฉันเพียงแค่ให้ผลตอบแทนนี้ 0, 0 เป็นค่าจำนวนเต็ม
และเพื่อที่จะทำให้เกิด ผิดประเภทสำหรับกรณีนี้
เพราะมันถูกคาดหวังว่าคู่ แต่แล้วกลับจำนวนเต็ม
ถ้าผมต้องการที่จะกลับจำนวนเต็มฉันสามารถ
ฉันสามารถกำหนดประเภทผลตอบแทน เพื่อ int กลับ 0 ที่นี่
และได้ดำเนินการส่วนที่สอง
แต่แล้วเราจะ ทำส่วนจำนวนเต็ม
และเพื่อให้เราก็จะไม่ได้รับ เฉลี่ยที่เราอาจจะคาดหวัง
แต่ใช่เราสามารถปรับเปลี่ยน ประเภทในทางที่
>> ผู้ชม: และประการที่สองคุณ มีหนึ่งคู่ที่ด้านบน
แต่ลงมาด้านล่างเมื่อคุณ กลับทำคู่,
ที่มีอยู่แล้วโดยอัตโนมัติ กลับรูปแบบคู่
ทำไมคุณยังคงต้องกำหนดมัน ที่มีลูกศรด้านบนที่มีเตียงคู่หรือไม่?
>> DAN AMRMENDARIZ: ดังนั้น ในกรณีนี้เป็นส่วนหนึ่ง
ของ the-- เพื่อที่จะทำซ้ำคำถาม เพราะมันเป็นนัยจากการกลับมา
ชนิดที่นี่สิ่งที่ประเภทนี้จริง คือเราจะต้องมีความชัดเจนกับสวิฟท์
เกี่ยวกับสิ่งที่เราต้องการ กลับออกมาจากฟังก์ชั่นนี้
เพื่อที่ว่าเมื่อดำเนินการพิมพ์ การตรวจสอบก็สามารถทำให้แน่ใจว่า
ว่าสิ่งที่เราได้เขียนจริง ลงมาด้านล่างจริงสอดคล้องกับที่
ดังนั้นจึงเป็นประเภทเช่นการตรวจสอบ กับตัวเองการเรียงลำดับของสถ​​านการณ์
แต่มี are--
>> ผู้ชม: [ไม่ได้ยิน] ลูก?
>> DAN AMRMENDARIZ: มีกรณีที่มี เราสามารถระบุได้ว่าเราสามารถทำได้โดยปริยาย
กำหนดประเภทผลตอบแทน
แต่ในกรณีนี้ผมไม่ คิดว่าจะทำงาน
มีบางอย่างที่เป็นไวยากรณ์อื่น ๆ ว่าเราจะได้เห็นต่อไป
>> สิทธิทั้งหมดเพื่อให้แหล่งนี้ รหัสคือแตกต่างกันเล็กน้อย
เพราะจะแยกวิเคราะห์ข้อโต้แย้งจากนี้ ฟังก์ชั่นที่เรากำลังเรียก
ผมขอแสดงวิธีการทำงาน ก่อนที่เราจะย้ายไปจริง
กับบางสิ่งที่น่าสนใจ ที่เกิดขึ้นในสวิฟท์
>> ดังนั้นในกรณีนี้ถ้าฉันทำงานนี้ รหัสแจ้งให้ทราบว่าสิ่งที่ทำ
is-- ขณะที่ชนิดของมัน ทำให้ผมมีข้อผิดพลาดแปลก
ฉันต้องการที่จะผ่านมันคู่ของ จำนวนเต็มเป็นอาร์กิวเมนต์บรรทัดคำสั่ง
ดังนั้นเรามาดู, 150 และ 80, และกด Enter เพื่อหาสิ่งที่มันทำจริง
มันยอมรับแต่ละ ค่าเหล่านี้เป็นจำนวนเต็ม
มันป้อนพวกเขาลงในสมุดคะแนน
และแล้วก็มีประสิทธิภาพ ว่าการคำนวณค่าเฉลี่ย
และการแสดงผลที่ตามที่เราคาดหวัง
>> แต่เห็นได้ชัดว่ามีอะไรบางอย่างเกิดขึ้น บนกับสิ่งนี้ปฏิเสธ
สิ่งที่เป็นจำนวนเต็ม
ในขณะที่คุณอาจจะจำได้จากตอนที่เราอยู่ การจัดการกับอาร์กิวเมนต์บรรทัดคำสั่ง
ใน C และภาษาอื่น ๆ เป็นครั้งแรกมาก รายการ 0 ครั้งในการโต้เถียงบรรทัดคำสั่งที่
รายชื่อเป็นชื่อของคำสั่ง ที่เราดำเนินการจริง
ดังนั้นในกรณีนี้ฉันแค่วนลูป ทั้งหมดอาร์กิวเมนต์บรรทัดคำสั่ง
แต่ฉันไม่ได้ทำเรียงลำดับของแฟนซี ตรวจสอบเพื่อข้ามที่แรก
ฉันแค่ชัดเจนหรือฉันโดยปริยาย ซึ่งการตรวจสอบประเภทนี้
จำนวนเต็มก่อนที่จะมีความจริงผม ดำเนินการคำนวณนี้
>> และนั่นเป็นหลัก สิ่งที่เกิดขึ้นที่นี่
สำหรับข้อโต้แย้งในทุก ข้อโต้แย้งของกระบวนการ
ผมจะดำเนินการตรวจสอบบางส่วน
และในกรณีนี้ผมจะ เพื่อพยายามที่จะแปลงแรก
อาร์กิวเมนต์ที่เป็นจำนวนเต็มโดย การดำเนินการ typecast ชัดเจน
เพราะมันเป็นเรื่องเกี่ยวกับการป้อนข้อมูลสตริง และไม่ได้อยู่ในความเป็นจริงจำนวนเต็ม
>> แต่นี้เป็นชนิดของไวยากรณ์แปลก ถ้าปล่อยให้เกรดเท่ากับ Int (อาร์กิวเมนต์)
สิ่งที่เป็นจริงที่เกิดขึ้น ที่นี่เป็นอย่างมาก
สิ่งสำคัญที่จะใช้สวิฟท์ของคุณ
นี้คือการใช้สิ่งที่ เรียกว่าเลือกประเภท
>> ดังนั้นฟังก์ชั่นนี้ Int (อาร์กิวเมนต์) ผลตอบแทนที่ได้ไม่ได้เป็นเพียงจำนวนเต็ม แต่ผลตอบแทน
สิ่งที่เรียกว่าเป็นจำนวนเต็มไม่จำเป็น
และดังนั้นนี่คือการจัดเรียงของ ประเภทที่ด้านบนของชนิด
การจัดเรียงของคุณสามารถจินตนาการมันเหมือน ก็กลับมาเช่นแพคเกจ
และเมื่อคุณเปิดที่ แพคเกจอย่างใดอย่างหนึ่ง
มีจำนวนเต็มซึ่งเป็นผลมาหรือ มันจะมีอะไรอย่างที่อยู่ในนั้นเลย
และนี่คือประโยชน์ที่มีข้อผิดพลาดการตรวจสอบ กลไกเพราะในกรณีนี้
เราสามารถหาเป็นแบบนี้ การแปลงชนิดประสบความสำเร็จ?
ถ้ามันเป็นแล้วมันเป็นในความเป็นจริง จะมีจำนวนเต็มภายใน
มิฉะนั้นมันจะมีบางส่วน ค่าที่เราจะเรียกศูนย์ที่
เป็นตัวแทนของจำนวนเต็มไม่ทั้งหมด
มันเป็นตัวแทนของอะไรจริงๆ
>> และเพื่อการนี​​้หากการก่อสร้าง ช่วยให้เราสามารถแกะแพคเกจที่
ตัวเลือกที่มีผลผูกพัน
และถ้าเราสามารถที่จะแกะที่ แพคเกจและหาจำนวนเต็มภายใน,
แล้วสิ่งที่เรากำลังพูดถึง ที่นี่เป็นที่ที่เราจะแล้ว
ช่วยให้ค่าที่จะได้รับการตั้งใน ชั้นประถมศึกษาปีนี้คงเรียกว่า
และส่วนหนึ่งของถ้าคำสั่งนี้ ส่วนบนของถ้าคำสั่ง
จะทำงานเพราะเห็นว่า แกะก็ประสบความสำเร็จ
>> ถ้ามันเกิดขึ้นเพียงเพื่อที่ มีข้อผิดพลาดที่อาจจะ
ในการแปลงชนิดนี้อย่างชัดเจน จากสตริงเป็นจำนวนเต็มอาจจะ
มันเป็นค่าเอบีซีเช่น
และที่ไม่ได้ไปจริง แปลงเป็นจำนวนเต็ม
จากนั้นก็จะกลับศูนย์ ซึ่งไม่ได้เป็นจำนวนเต็ม
และนี่ถ้าคำสั่งเดียวแล้วล้มเหลว
เกรดจะไม่อยู่เพราะ มันมีเนื้อหาจำนวนเต็มไม่มี
และมันจะทำงานบล็อกอื่นแทน
ใช่?
>> ผู้ชม: ไม่มีเป็น N-I-L?
DAN AMRMENDARIZ: ไม่มีเป็น N-I-L ใช่
>> ดังนั้นนี่อาจจะเป็นหนึ่งใน สิ่งที่ยากที่สุดเกี่ยวกับสวิฟท์
โดยเฉพาะอย่างยิ่งเมื่อคุณอยู่ใน วัชพืชในแอป iOS
และคุณจริงพยายาม ที่จะทำบางอย่างมีการพัฒนา
มันจะได้รับการโห่ร้อง ที่เกี่ยวกับตัวเลือกที่คุณ
มันเป็นไปได้ขอให้คุณสำหรับ เครื่องหมายคำถามและเครื่องหมายอัศเจรีย์
แต่เมื่อคุณคิดว่าคุณ out-- อุทิศเวลาในการหา
สิ่งที่เกิดขึ้นกับชนิดตัวเลือก คุณจะช่วยตัวเองมากปวดหัว
ในขณะที่คุณกำลังพยายามที่จะ เขียน app ในสวิฟท์
>> เป็นจริงคุณลักษณะที่มีประสิทธิภาพมาก
และคุณก็จะต้อง ใช้คำของฉันมันตอนนี้
แต่เราจะเห็นการก่อสร้างนี้ และคนอื่น ๆ ชอบมัน
ในบางส่วนของรหัสที่มาอื่น ๆ ที่ เราจะแสดงในเวลาเพียงนิด ๆ หน่อย ๆ
>> มีคำถามใด ๆ เริ่มต้นที่นี่?
ดังนั้นประเด็นที่สำคัญก็คือว่า เลือกประเภทคือการจัดเรียงของ metatype
มันทั้งมีค่า และถ้าไม่แล้วมัน
บางทีอาจจะมีค่าที่เกี่ยวข้อง กับมันหรือมันไม่มีค่าใด ๆ
และมันก็เป็นตัวแทนจากศูนย์
ส่วนที่เหลือของเรื่องนี้อาจจะเป็น ที่คุณคาดหวัง
>> ดังนั้นขอให้ทางลาดขึ้น ความยากลำบากอีกครั้ง
และในครั้งนี้เราจะมาดูที่บาง ชนิดข้อมูลอื่น ๆ ที่มีอยู่จริง
หนึ่งในนั้นคือพจนานุกรมซึ่งเป็น คล้ายกับงูหลามพจนานุกรม
มันค่อนข้างคล้ายกับตารางแฮชใน ซีมันเป็นหลักการทำแผนที่ของคีย์
ปุ่มที่สามารถสตริง
และเมื่อคุณมองขึ้นปุ่มเหล่านั้น คีย์เหล่านั้นจะมีค่า
ดังนั้นจึงไม่ได้ค่อนข้างอาร์เรย์ แต่ แทนมากขึ้นความสัมพันธ์ใกล้ชิด
แผนที่กัญชาหรือตารางแฮช
>> ลองดูวิธีนี้ควร ในการทำงานก่อนที่เราจริง
ไปลงในรหัสแหล่งที่มาของตัวเอง
ถ้าฉันเพียงแค่เรียกใช้นี้ จริงๆไม่มีอะไรเกิดขึ้น
มันบอกฉันว่าฉันคาดหวัง พารามิเตอร์บางประเภทดังต่อไปนี้
ดังนั้นฉันจะให้กับ มันมีปัญหาบางคนตั้งชื่อ
pset0 ดังนั้นบางทีผมได้ 100
และ pset1 ผมได้ 5
และแล้วในการสอบผม ไม่ได้ดีจริงๆและได้ 30
และโอ๊ะฉันตีพื้นที่ที่นี่
>> เมื่อผมกด Enter คุณจะเห็น จะดำเนินการคำนวณบาง
มันบอกว่า Gradebook สาม เกรด pset1, pset0, การสอบ
และมีสมุดคะแนน นี้เฉลี่ยที่เฉพาะเจาะจง
ดังนั้นอีกครั้งเรากำลังทำงาน กับความคิด Gradebook นี้
แต่เราจะยังคง iterating กับความซับซ้อนของการทำงานของเรา
>> ดังนั้นในการโจมตีเราเพียง จะสร้างฟังก์ชั่นที่
เป็นผู้รับผิดชอบสำหรับการพิมพ์การใช้งาน
และมีทางออกนี้ ฟังก์ชั่นซึ่งจะเป็นเพียง
ออกจากโปรแกรมประยุกต์โดยการบังคับ
นี้ไม่ได้เป็นสิ่งที่ คุณจะใช้ใน app iOS
นี้เป็นเพียงในกรณีนี้ กับอาร์กิวเมนต์บรรทัดคำสั่ง
ต่อไปเราจะเริ่มเคลื่อนไป Xcode
แต่นี้เป็นเฉพาะกับคำสั่ง สายโปรแกรมในรูปแบบของสวิฟท์
>> ลองมาดูที่บางส่วนของ สิ่งที่น่าสนใจที่นี่
ลองมาดูกันเพียงคู่ของ สิ่งที่น่าสนใจที่จะพูดถึงอาจจะ
คือว่าในการทำงานของฉัน พิมพ์จำนวนของเกรด
คุณอาจจะจำได้ว่าผมมีรายการที่ ของ items-- pset1, pset0 และการสอบ
คุณสามารถจริงได้อย่างรวดเร็ว และทำเช่นนี้ได้อย่างง่ายดาย
โดยการใช้สมุดคะแนนซึ่งเป็น พจนานุกรมที่มีคีย์และค่า
ทั้งหมดที่สำคัญคือผ่าน วิธีการคีย์จุดที่นี่
แล้วใช้ joinWithSeparator นี้ ซึ่งจะใช้เวลาทั้งหมดของกุญแจ
ที่เราได้พิมพ์ใน pset1-- หรือ ขออภัย pset0, pset1 และ exam--
และเชื่อมเข้าด้วยกัน โดยใช้เครื่องหมายจุลภาคและพื้นที่ที่
เพื่อสร้างสตริงยาว
เข้าร่วมการดำเนินการนี​​้เป็นเพียงปรากฏการณ์ ประโยชน์ในหลากหลายบริบท
และดังนั้นจึงเป็น joinWithSeparator นี้
>> และนี่คือสิ่งหนึ่งที่เป็น เปลี่ยนจากสวิฟท์ 1 ถึง 2 สวิฟท์
มีการใช้เป็น style-- หลามถ้าคุณ
คุ้นเคยกับ Python-- หลาม รูปแบบวิธีการเข้าร่วมในสาย
แต่ที่ไม่ กรณีที่ 2 ในสวิฟท์
คุณต้องการที่จะใช้นี้ถ้าคุณต้องการ เพื่อเชื่อมอาร์เรย์ของสิ่ง
ร่วมกับสตริง
>> ดังนั้นบางทีแล้วของเรา การอภิปรายของค่าเฉลี่ยก่อน
ก็จะทำให้ความรู้สึกนิด ๆ หน่อย ๆ สำหรับเราที่จะตั้งค่าฟังก์ชั่นเฉลี่ย
ที่จะเป็นตัวเลือกที่ค่อนข้างคู่ มากกว่าเพียงแค่สองอย่างชัดเจน
เพราะเรามีที่ สภาพผิดปกติท​​ี่
สิ่งที่ถ้า gradebook มีจริง มีค่าไม่มีอยู่ภายใน?
สิ่งที่ควรจะเป็นผลตอบแทนเ​​ฉลี่ย?
>> ดีอาจจะอยู่ใน C คุณ จะต้องทำอะไรบางอย่าง
เช่นให้ค่าแมวมองเช่น 0.0 หรืออาจจะเป็นจำนวนลบ
หรือเพียงแค่สิ่งที่เป็นตัวแทนของความเป็นจริง ว่ามีข้อผิดพลาดบางเงื่อนไข
และคุณอาจจะไม่จริงมี ความสามารถในการคำนวณค่าเฉลี่ยที่
ดีงามของการระบุที่ เลือกประเภทที่จะทำอย่างนั้น
และตอนนี้ผมกำลังพูดคำเหล่านี้ แต่ นี้จริงไม่ได้ใช้ optionals
แต่เราจะเห็นว่าในเวลาเพียง นาทีที่เราสามารถตั้งค่าเฉลี่ย
จะเป็นชนิดข้อมูลที่ไม่จำเป็นเพื่อให้ ถ้าจริงจะส่งกลับข้อมูลบางส่วนแล้ว
เราจะส่งกลับข้อมูลที่
มิฉะนั้นเราจะกลับมา ศูนย์บอกว่านี้
ไม่มีการคำนวณที่มีความหมาย
>> ขอย้ายไปเป็นอย่างอื่น
ดังนั้นจากที่นี่เราได้รับการดู ตัวอย่างเหล่านี้ทั้งหมดในบรรทัดคำสั่ง
แต่จริงๆสิ่งที่คุณจะ ที่จะจัดการกับเป็น Xcode
และหนึ่งในสิ่งที่ดีเกี่ยวกับ Xcode เป็นและโดยเฉพาะในสวิฟท์
คือการที่เรามีนี้ สิ่งที่เรียกว่าสนามเด็กเล่น
และสนามเด็กเล่นเป็น ไม่ได้อยู่ที่แอป iOS
แต่มันช่วยให้คุณสามารถที่จะทดสอบ กับสวิฟท์ในวิธีที่ง่ายมาก
คุณสามารถพิมพ์ทั้งหมดของรหัสของคุณ
มันเป็นอย่างดีเน้นไวยากรณ์ที่นี่
เมื่อคุณสร้างไฟล์ใหม่ก็จะถาม คุณถ้าคุณต้องการที่จะสร้างสนามเด็กเล่น
แต่สิ่งที่ดีเกี่ยวกับสนามเด็กเล่น คือว่าอยู่ทางด้านขวาของหน้าต่างของคุณ
มันไม่จริงแสดงให้คุณเห็น เอาท์พุทจากรหัสของคุณ
ดังนั้นถ้าผมเลื่อนลงมาเราจะเห็นสิ่งที่ การส่งออกของเส้นต่างๆของรหัส
จริงที่จะเกิดขึ้น
>> ดังนั้นในกรณีนี้เรากำลังจะไป เปลี่ยนทิศทางเพียงเล็กน้อย
และพูดคุยเกี่ยวกับสิ่งที่เป็นจริง สิ่งสำคัญที่จะวิธีการในระดับสูงนี้
ที่สวิฟท์ดำเนินและมัน เป็นความคิดของการปิดนี้
และคุณอาจจะเคยเห็นนี้ นิด ๆ หน่อย ๆ ใน JavaScript
สำหรับบรรดาของคุณที่ อยู่ใน CS50 ปิด
เป็นที่นิยมมากวิธีที่ดีมากในการทำ สิ่งที่อยู่ในระดับสูงในภาษาสมัยใหม่
แต่มันก็ยังชนิดของยากที่จะ ตัดหัวของรอบเป็นครั้งแรก
ดังนั้นหากคุณกำลังมองหาที่นี้ ครั้งแรกที่ตกลง
เพียงแค่ดูรหัสแหล่งที่มาและดู ถ้าคุณสามารถคิดออกที่บ้าน
>> ดังนั้นในกรณีนี้ขอบอกว่าเรา ต้องการที่จะสร้างจำนวนมากของเลขยกกำลัง
ที่มีค่าคงที่บาง
ดังนั้นในกรณีนี้ผมสามารถสร้างฟังก์ชั่น
ฉันจะเรียกมันว่าอำนาจของ 2 มีวัตถุประสงค์เพียงอย่างเดียวในชีวิต
คือการใช้การป้อนข้อมูลและบางคู่ มันและส่งกลับค่าที่
ขอให้สังเกตว่าที่นี่ฉัน ยอมรับประเภทหนึ่งของข้อมูล
มันจะเป็นตัวแปรที่เรียกว่า x
มันเป็นประเภทคู่
และฉันจะกลับมาเป็นคู่ที่นี่
และฉันก็จะทำ อย่างตรงไปตรงมาสวย
วิธีที่ไร้เดียงสาของสองเท่าของค่านี้
และฉันจะแสดงให้คุณเห็นว่าทำไม จะเป็นประโยชน์ในเวลาเพียงสอง
>> ขอให้สังเกตว่าที่นี่เรามีในช่วงนี้ อีกครั้ง สำหรับบางสิ่งบางอย่างใน 1 จุด
dot dot 2 ซึ่งหมายความว่า วงนี้จะทำงานเป็นครั้งที่สอง
แต่นี้เป็นตัวแปรดัมมี่
มันหมายความว่าฉันไม่ได้จริงๆจะ จะใช้ตัวแปรที่ใดก็ได้
ด้านในของวงนี้
ผมแค่อยากบรรทัดนี้ รหัสที่จะเรียกใช้สองครั้ง
โดยไม่จำเป็นต้องรู้ ค่าของช่วงนั้น
>> ดังนั้นในกรณีนี้ผมใช้ผล ครั้งสองครั้ง x ซึ่งเป็นหลัก
หมายความว่าฉัน squaring ค่านี้
และเกิดเหตุการณ์นี้กับ ทำงานตามที่เราจะคาดหวัง
พลังของ 2 ผ่านค่าของ 2.0 ช่วยให้เรามีการส่งออกของ 4
3.2 ผลงาน 10.24
>> ตอนนี้เราสามารถทำอะไรที่คล้ายกัน สิ่งสำหรับการใช้พลังงานจาก 3
แต่ตอนนี้เปลี่ยนเฉพาะช่วง
สำหรับตัวแปรดัมมี่ใน 1 ผ่าน 3 คูณ 3 ครั้ง
และทำสิ่งเดียวกัน
>> ดังนั้นนี่อาจจะรู้สึกเล็ก ๆ น้อย ๆ ที่วางแผน
แต่มีสิ่งที่สำคัญ ซึ่งสิ่งที่นี่
คือการที่กำลังมองหาที่เหล่านี้ สองหน้าที่มี
เพียงสิ่งเดียวที่แตกต่างกัน ซึ่งเป็นค่านี้ในช่วง
ทุกสิ่งทุกอย่างเกี่ยวกับทั้งสอง ฟังก์ชั่นอำนาจของ 3 และพลังของ 2
ในความเป็นจริงเหมือนกันเพราะ พวกเขาทำงานในลักษณะเดียวกัน
>> ดังนั้นที่จุดนี้เล็ก ๆ น้อย ๆ ระฆังปลุกควรจะออกไป
หวังว่าสิ่งที่คุณกำลังจะบอกว่า คุณรู้ว่านี้รู้สึกนิด ๆ หน่อย ๆ
เช่นซ้ำซ้อน
บางทีอาจจะมีวิธีที่ฉันจะ สามารถที่จะสรุปทั้งหมดนี้
และจัดให้มีฟังก์ชั่น หรือสร้างฟังก์ชั่นที่
ไม่ว่าสิ่งที่ฉันต้องการโดยไม่ต้อง จำเป็นต้องพิมพ์ออกอย่างชัดเจน
และนี่คือสิ่งที่อำนาจ ของการปิดช่วยให้เราสามารถที่จะทำ
ดังนั้นลองมาดูที่นี้
และฉันจะใช้เวลาสองสาม นาทีเกี่ยวกับเรื่องนี้เพราะ
เป็นสิ่งที่สำคัญสำหรับสวิฟท์สวย
เราเห็นนี้ตลอดเวลา
เรากำลังจะกำหนดฟังก์ชั่น
มันจะถูกเรียกว่า powerOf
มันจะยอมรับ พารามิเตอร์ที่เรียกว่า Y ของ Int ประเภท
แต่จะดูที่ชนิดกลับมา
ชนิดกลับคือใน วงเล็บคู่ลูกศรคู่
ซึ่งหมายความว่าฟังก์ชั่นนี้ powerOf นี้ฟังก์ชั่น
จะกลับมาฟังก์ชั่น
นั่นคือการยอมรับคู่ และกลับมาคู่
เพื่อที่ว่าอาจจะฟังดูชนิดของบ้า แต่ขอเลื่อนลงมานิด ๆ หน่อย ๆ
และมองไปเห็นสิ่งที่เกิดขึ้น
เราภายในของฟังก์ชั่นนี้ powerOf
เรากำลังสร้างฟังก์ชันใหม่ เรียกว่า exponentiator,
แต่มันไม่สำคัญว่าสิ่งที่มันเป็น
>> ขอให้สังเกตว่ามี ค่าเข้าของ x
และจะมีการในคู่ และกลับมาคู่
และนี่เป็นรหัสเดียวกับที่เรา เห็นข้างต้นยกเว้นว่าค่าของ 2
หรือมูลค่าของ 3 ที่ บนผูกพันอยู่ในช่วงนั้น
ได้ถูกแทนที่ด้วย ค่า y นี้ซึ่ง
เป็นพารามิเตอร์เริ่มต้น ฟังก์ชั่นของเรา powerOf
และที่จุดนี้เรา exponentiator ผลตอบแทน
เรากำลังกลับมาทำงาน
>> มันเป็นชนิดของชอบความคิดเล็ก ๆ น้อย ๆ เป่า
แต่ขอคิดสิ่งที่เกิดขึ้น เมื่อฉันเรียกใช้ฟังก์ชันนี้ powerOf
และผ่านเข้าไปในค่าบางอย่างเช่น 2
สิ่งนี้หมายความว่า ตอนนี้ผมมีค่า
2 ปีซึ่งหมายความว่าค่านี้ ปีในการทำงาน exponentiator นี้
จะเป็นค่าที่ 2
แต่ฉันกลับมานี้ ฟังก์ชั่น exponentiator
>> ดังนั้นสังเกตเห็นสิ่งที่ผมพูดว่าสวิฟท์ ได้สร้างในกรณีนี้
ตารางให้เป็นความหมายก็ ฟังก์ชั่นที่ยอมรับคู่
และส่งกลับ Double A
ผมได้สร้างฟังก์ชั่น บางสิ่งบางอย่างที่สี่เหลี่ยม
โดยใช้กลไกนี้ได้ที่นี่
และจริงๆสิ่งที่เกิดขึ้นคือ ว่ามันจะกลับมาฟังก์ชั่นนี้
exponentiator แต่ค่านี้ y ที่เป็นห่อภายในของมัน
และดังนั้นตอนนี้ผมใช้เวลานี้ทุก ตัวแปรหรือค่าคงที่นี้เรียกว่า
ตารางมันก็จะ ที่จะประพฤติตัวเป็นฟังก์ชั่น
และอื่น ๆ จากนั้นผมก็สามารถเรียกตัวแปรที่ เหมือนที่ผมจะเรียกฟังก์ชั่น
และผ่านลงไปจำนวนหนึ่ง เช่นในกรณีนี้ 3
และจากนั้นผมก็จะตารางค่านี้
ดังนั้น 3 ยกกำลังสองแล้วจะ กลายเป็น 9 ในขณะที่เราสามารถดูที่นี่
>> บ้าจริงๆ แต่ในตอนนี้ ช่วยให้ฉันมีโอกาสที่
ในการสร้างฟังก์ชั่นอื่น ๆ powerOf
เหมือนที่ผมสามารถพูดได้ตกลงกันตอนนี้ฉันต้องการ เพื่อสร้างฟังก์ชั่นใหม่ powerOf (3)
และจัดเก็บที่เป็น ก้อนที่เรียกว่าค่าคงที่
และก้อนคือตอนนี้ไปได้ ฟังก์ชั่นที่แยกต่างหากที่จะแล้ว
ใช้ค่าบางอย่างเป็น input และก้อนที่ ค่าที่เราสามารถมองเห็นในบรรทัดด้านล่าง
ที่นี่
ก้อน 2 จะไปมีผลใน 8
>> หวังว่าสิ่งที่เรียบร้อยสวย
คุณไม่เคยเห็นแบบนี้มาก่อน
ผมแนะนำให้คุณมองเข้าไปในการปิด และตรวจสอบเรื่องนี้นิด ๆ หน่อย ๆ
มันเป็นสิ่งที่มีประสิทธิภาพจริงๆที่เราเห็นเป็นจำนวนมาก ใน JavaScript และภาษาอื่น ๆ
มันสำคัญมากที่จะ การทำความเข้าใจ APIs ได้เป็นอย่างดี
ที่เราจะได้รับในเวลาเพียงสอง
ใช่?
>> ผู้ชม: เมื่อคุณทำ powerOf (2) วงเล็บแล้ว
วงเล็บอีก input-- อื่น คุณพื้นเปลี่ยนตาราง
DAN AMRMENDARIZ: ดังนั้นมอง ที่บรรทัดสุดท้ายมากที่นี่
มันเป็นจริงทั้งหมดที่เป็นไปได้ ทำอย่างนั้นผูกมัดตามที่คุณแนะนำ
ดังนั้น powerOf (5) หมายความว่าเรากำลังจะ ที่จะมี exponentiator 5 ขึ้นที่นี่
ดังนั้นนี่เป็นหลักจะเป็น สิ่งเดียวกับ 4 ถึงอำนาจที่ห้า
เพราะเราได้สร้าง exponentiating ทำงานมีอำนาจที่ห้า
และเรากำลังผ่านเข้ามา ฟังก์ชั่นที่คุ้มค่า 4
และเราได้รับค่าที่ ที่เราคาดว่า 1024
ผู้ชม: และก็ไม่ได้เป็น ชื่อจึงทำให้มันง่ายขึ้น
การอ่านตารางสิ่งที่
>> DAN AMRMENDARIZ: ขวาตรง
ดังนั้นก่อนที่จะฉันเพียงแค่ใส่มัน เป็นค่าคงที่นี่เพื่อ
ที่มันทำให้ง่ายต่อการใช้ชื่อที่
ใช่?
>> ผู้ชม: ในบริบทนี้ powerOf ก็เป็นส่วนหนึ่ง
ของภาษาการเขียนโปรแกรม เมื่อเทียบกับวิธีที่คุณ
คิดว่าใน powerOf [ไม่ได้ยิน]
DAN AMRMENDARIZ: ดังนั้น ในกรณีนี้ powerOf
เป็นเพียงชื่อของ ฟังก์ชั่นที่ผมกำหนดไว้ที่นี่
ดังนั้นจึงไม่ธรรมชาติ ภาษาของตัวเอง
แต่มันเป็นเพียง ฟังก์ชั่นที่มี
ชื่อนั้นเพราะผมให้ชื่อนั้น
คำถามใด ๆ อื่น ๆ ?
ทั้งหมดขวา
>> ตอนนี้เป็นที่ดี
แต่คุณจะไม่เห็น จำนวนมากของฟังก์ชั่นปิดที่
เป็นเช่นนี้ที่คุณกำหนดภายใน หนึ่งฟังก์ชั่นฟังก์ชั่นอื่น
และคุณสามารถทำมันได้
แต่มันเป็นชนิดของไม่ได้ จำเป็นจริงๆใช่มั้ย?
เช่นเดียวกับเหตุผลที่ฉันจะกำหนดนี้ ฟังก์ชั่นที่เรียกว่า exponentiator
แล้วส่งกลับมาทันที
ทำไมถึงไม่สามารถฉันเพียงแค่ทันที กลับฟังก์ชั่นนี้หรือไม่?
>> และในความเป็นจริงนี้เป็นอย่างแม่นยำ คิดที่อยู่เบื้องหลังแนวคิดที่เรียกว่า
ฟังก์ชั่นที่ไม่ระบุชื่อที่ ฟังก์ชั่นที่ไม่ระบุชื่อไม่จริง
มีชื่อเพราะพวกเขา ไม่จำเป็นต้องมีหนึ่ง
และดังนั้นในกรณีนี้ใน 7B, เราสามารถหาได้อย่างแม่นยำว่า
มันคือทั้งหมดที่รหัสเดียวกัน ไม่ตรงกับสิ่งเดียวกัน
แต่ตอนนี้เราได้เปลี่ยนเล็กน้อยเพื่อให้ ฟังก์ชั่นที่ powerOf นี้ทันที
ผลตอบแทนที่ได้ฟังก์ชั่น
ขอให้สังเกตว่าหลังจากที่กลับมา มีการปีกกาเปิด
ก็คาดหวังว่าคู่นี้การป้อนข้อมูล
ก็คาดหวังว่าการส่งออกที่มีเตียงคู่
และแล้วในคำหลัก แยกรหัสของตัวเอง
ดังนั้นนี่คือไม่ระบุชื่อฟังก์ชั่น
มันไม่จริงมีชื่อในขณะที่ ก่อนที่จะถูกเรียกว่า exponentiator
แต่ที่เราเห็นเพียงจริงๆ ไม่ได้หมายถึง exponentiator
ด้านนอกของฟังก์ชั่นที่
ดังนั้นมันไม่สำคัญ
ดังนั้นนี่คือฟังก์ชั่นที่ไม่ระบุชื่อ ที่เรียกว่าเพราะมันเป็นนิรนาม
แต่ก็ยังคงถูกนำมาใช้ ในบริบทของรหัสนี้
>> คนที่คู่ต่อไปฉัน จะยังคงหวังว่า
พัดใจของคุณนิด ๆ หน่อย ๆ
เราสามารถลดความซับซ้อนมากยิ่งขึ้นนี้
เพราะเป็นได้อย่างชาญฉลาด ชี้ให้เห็นก่อนหน้านี้
บางทีเรารู้จริงโดย อนุมานจากโค้ดนี้สิ่งที่
การส่งออกของรหัสนี้เป็นไปได้
และในความเป็นจริงในเรื่องนี้ฟังก์ชั่นที่ไม่ระบุชื่อ เราสามารถสรุปได้ในความเป็นจริงชนิดของข้อมูล
>> ดังนั้นในครั้งนี้เราไม่ได้ จำเป็นที่จะต้องกำหนดอย่างชัดเจน
ประเภทของข้อมูลที่เป็น เข้าและออกจากฟังก์ชั่นนี้
สำหรับคู่ของเหตุผล
หนึ่งคือการที่เราได้กำหนดขึ้นที่ เป็นต้นแบบของฟังก์ชั่นการปิดล้อม,
สิ่งที่ประเภทของข้อมูลที่ไม่ระบุชื่อนี้ ฟังก์ชั่นควรเข้าและส่งออก
และจากที่อื่น ๆ ที่เรา สามารถอนุมานจากรหัส
ลงที่นี่ว่าเราจะยอมรับ การป้อนข้อมูลที่เป็นประเภทคู่
และกลับมาคู่
>> ขอให้สังเกตว่าที่นี่เรามีไม่แน่ชัด กำหนดชื่อของการขัดแย้งที่
ที่ฟังก์ชั่นนี้คือการยอมรับ
และเพื่อให้เราเห็นว่าเราสามารถอ้างถึง พารามิเตอร์ที่ใช้ $ 0, ​​$ 1,
อื่น ๆ และอื่น ๆ ขึ้นอยู่กับ จำนวนของพารามิเตอร์ที่ใช้
ในฟังก์ชั่นนี้
>> นี่คือสิ่งที่คุณจะ เพื่อดูจำนวนมากนี้ปีกกาเปิด
ความหมายตามมาด้วย $ 0, ​​และจากนั้นการดำเนินการบางอย่าง
แล้วปีกกาปิด
นั่นคือที่ไม่ระบุชื่อฟังก์ชั่น ที่มีประสิทธิภาพการดำเนินการนี​​้
มันมีพารามิเตอร์ที่นี้ ประเภทมันเป็นสรุป
พารามิเตอร์แรกคือ $ 0
และการดำเนินงานบางอย่าง ที่เกิดขึ้นบนที่ $ 0
>> ผู้ชม: ดังนั้นเครื่องหมายดอลลาร์ หมายความว่าพารามิเตอร์โดยทั่วไป
และ 0 หมายถึงเป็นคนแรก?
DAN Armendariz: ที่ที่ถูกต้อง
ดังนั้นเครื่องหมายดอลลาร์โดยทั่วไปหมายถึง พารามิเตอร์และ 0 หมายถึงคนแรก
แต่การทำงานโดยเฉพาะใน กรณีนี้ที่ผมยังไม่ได้ตั้งชื่อ
การขัดแย้งในการทำงานของฉันที่ไม่ระบุชื่อ
>> ผู้ชม: ไม่ Perl หรือสิ่งที่มี เครื่องหมายดอลลาร์นี้ดอลลาร์ 0 ในการมี?
DAN Armendariz: ไม่ซึ่งฉันขอโทษ?
ผู้ชม: Perl ไม่ได้ เงินดอล 0 นี้ดอลลาร์ 1-
DAN Armendariz: ฉันไม่ได้ ชินกับเพิร์ล
แต่ทุกสิ่งที่กำหนดตัวแปร ขึ้นอยู่กับสัญญาณดอลลาร์
และอาจจะมีบางภาษา ที่มีคุณสมบัติเช่นนี้
ในความเป็นจริงสวิฟท์ยืม จำนวนมากของคุณสมบัติเช่นนี้
จากหลายภาษาอื่น ๆ
เราจะเห็นคำแนะนำของงูใหญ่ในนั้น
ความหมายของประเภทนี้ ดูเหมือนว่าจะมาจาก OCaml
และเรามีเพียงทั้งกลุ่ม สิ่งที่ได้จากจำนวนของภาษาที่แตกต่าง
นั่นเป็นหนึ่งในที่ดี สิ่งที่เกี่ยวกับสวิฟท์
คือว่ามันใช้เวลามากของที่ดีที่สุด ความคิดจากพวงของภาษา
และ shoehorns พวกเขาทั้งหมดเข้าด้วยกัน เป็นภาษาหนึ่งในสุด
ในความเป็นจริงถ้าคุณให้ฉันไป ยังคงพัดใจของคุณ
ดังนั้นเราจึงได้รับการทำทั้งหมดนี้
เราอาจจะสามารถลดความซับซ้อนของเล็ก ๆ น้อย ๆ นี้ บิตโดยตระหนักว่าแน่นอน
สวิฟท์มี exponentiating ฟังก์ชั่นที่สร้างขึ้นใน
ถ้าผมนำเข้าดาร์วินซึ่ง เป็นเพียงห้องสมุดที่
มีฟังก์ชั่นที่เรียกว่าธารตอนนี้ ฉันสามารถลดความซับซ้อนของอำนาจของฉันของฟังก์ชั่น
จะเป็นดังต่อไปนี้
มันเป็นไปได้ที่จะกลับ ฟังก์ชั่นนี้ที่ไม่ระบุชื่อ
>> แต่ดูที่วิธีการที่เรียบง่ายอยู่ในขณะนี้
นี้เป็นฟังก์ชั่นที่ไม่ระบุชื่อที่ คือการยอมรับชนิดของข้อมูลบางส่วน
และมันก็เป็นไปได้อย่างใดอย่างหนึ่ง อาร์กิวเมนต์โดยเฉพาะ
อ้างอิงที่ $ 0 ที่เป็นประเภทคู่
มันเป็นไปได้กลับมาประเภทคู่
แต่คำสั่งที่ส่งกลับ อยู่ในขณะนี้โดยปริยาย
>> และมันก็เป็นรูปแบบนี้แน่นอนที่ เป็นอย่างมากที่แพร่หลายมากในสวิฟท์
ทั่วทุกสถานที่.
เรากำลังจะเห็นนี้ ตลอดเวลาในสวิฟท์
ดังนั้นฉันแสดงทั้งหมดนี้จะ คุณเพราะรูปแบบนี้
นี้เป็นเรื่องธรรมดามาก เพื่อดูซึ่งหมายความว่า
เป็นฟังก์ชั่นที่ไม่ระบุชื่อ ที่มีประสิทธิภาพ
การดำเนินการบางอย่างเกี่ยวกับการขัดแย้งเหล่านี้
และมีผลตอบแทนโดยปริยาย
ดังนั้นมันจึงเป็นอย่างที่เป็นสิ่งเดียวกัน สำหรับเราที่จะพูดแบบนี้ที่นี่
>> เพราะหยิกนี้ วงเล็บคือฟังก์ชั่น
เราดำเนินการนี​​้ ในอาร์กิวเมนต์แรก
เรากำลังจะกลับไปที่
แต่ตอนนี้กลับมาด้านนอก กลับมาที่ฟังก์ชั่นทั้งหมด
ว่าการทำงานทั้งที่ไม่ระบุชื่อ ที่เราได้สร้างขึ้น
คำถามใด ๆ อื่น ๆ ?
สิทธิทั้งหมดผมไม่ทราบว่า พวกคุณมีความพร้อมสำหรับการนี​​้
แต่เราสามารถไปได้บ้ากับสวิฟท์
คุณพร้อม?
ตกลงนี้เป็นที่ดี
>> ตอนนี้เราจะมีความสามารถในการ ไปในสวิฟท์เนื่องจากวิธีการแบบแยกส่วน
และวิธีการตามโปรโตคอลที่มันเป็นไป กำหนดผู้ประกอบการเลวของเราเอง
เช่นเดียวกับในกรณีนี้เราก็ไม่มี สำหรับผู้ประกอบการ exponentiation-- ดี
สำหรับการดำเนินการอำนาจของบางสิ่งบางอย่าง
แต่ผมสามารถในสวิฟท์กำหนดใหม่ ผู้ประกอบการที่ไม่ว่าอย่างแม่นยำ
ดังนั้นในกรณีนี้มี พวงของไวยากรณ์ที่นี่
และฉันจะช่วยให้คุณสามารถมองไปที่มัน ที่บ้านเมื่อคุณดูที่นี้
แต่เราจะกำหนดมัดนี้ ผู้ประกอบการ ** ซึ่งจะช่วยให้เรา
โดยการกำหนดสิ่งที่ ฟังก์ชั่น ** จริง
ไม่ที่จะยอมรับมือซ้าย ด้านข้างและด้านขวามือ
และจากนั้นจะกลับมาตัวแทนของที่ ด้านซ้ายมือไปทางด้านขวามือ
>> และดังนั้นตอนนี้ทั้งหมดของฉันอย่างฉับพลัน ได้สร้างเศษใหม่
ดังนั้น 2 ** 3 หมายความว่า 2 ถึงอำนาจที่สาม
[ใจเป่าเสียง] นี้โดย ตัวเองจะทำให้คุณเป็นเช่น
ตกลงกรูซีฉันจะ สวิฟท์ทุกทาง
นี่คือที่ดี
นี้เป็นที่ยอดเยี่ยมสวย
>> แต่นี้เป็นตัวอย่างที่ดี
แต่ก็ต้องไม่เคยออกไปข้างนอก ตัวอย่างนี้จริง
กำหนดประกอบการของตัวเอง
แต่ก็ยังจะแสดงให้เห็นถึง จำนวนมากของการใช้พลังงานของสวิฟท์
และเหตุผลนี้เป็นจริง จริงๆเย็นมาก
ตกลงใช่?
ผู้ชม: หากคุณ การกำหนดผู้ประกอบการของคุณเอง
คุณจะรู้ว่าคุณไม่ได้ตั้งใจ และพยายามสร้างผู้ประกอบการที่เป็น
ในที่ใดที่หนึ่งใน C เช่น ซ่อนที่ไหนสักแห่งในสวิฟท์
เหมือนหนึ่งที่คุณปิดบัง อาจจะไม่ได้เห็นมาก่อน
>> DAN Armendariz: ดังนั้นถ้าคุณกำลังพยายาม เพื่อกำหนดผู้ประกอบการของคุณเอง
มีความเสี่ยงของการกำหนดเป็น มากกว่าหนึ่งผู้ประกอบการที่มีอยู่
ที่จะเข้าสู่ระดับของรายละเอียดที่ ผมไม่คิดว่าเรามีเวลาที่จะไปมากกว่า
แต่นั่นคือความเสี่ยง
และนั่นคือในความเป็นจริงเหตุผลว่าทำไม ผมไม่ได้ใช้สัญลักษณ์ลูกศรซึ่ง
เมื่อเรากำลังพิมพ์ออกพลังงานเรามักจะ ใช้ลูกศรเล็ก ๆ น้อย ๆ 4 5 หรือบางสิ่งบางอย่าง
เช่นเดียวกับที่เพียงเมื่อเรา Gchatting เพื่อนหรืออะไรก็ตาม
แต่ในกรณีที่ว่าจริง ก็จะทำให้เกิดการปะทะกัน
และดังนั้นผมจึงหลีกเลี่ยงมันเพียงเพราะ ฉันเกิดขึ้นที่จะรู้ว่าในกรณีนี้
ที่ที่จะทำให้เกิดการปะทะกันที่
>> ทั้งหมดขวา
ตอนนี้โชคไม่ดีสำหรับ เจ็ดนาทีที่ผ่านมา
ฉันต้องให้เป่า จิตใจของคุณนิด ๆ หน่อย ๆ
ดังนั้นให้ฉันไปแสดง บางสิ่งบางอย่างอื่น ๆ เช่นกัน
>> เราได้แสดงให้เห็นว่าคุณมีความคิดนี้ มีฟังก์ชั่นที่ไม่ระบุชื่อเหล่านี้
ปิดเหล่านี้ที่ช่วยให้คุณ ชนิดของฟังก์ชั่นผ่านไปรอบ ๆ
คุณสามารถกลับพวกเขา
คุณสามารถจัดการกับพวกเขา
คุณสามารถทำทุกประเภทของสิ่งที่บ้า
>> แต่สิ่งหนึ่งที่อื่น ๆ ที่ เกิดขึ้นที่จะเป็นประโยชน์
ความสามารถในการเป็นตรงข้าม ที่จะกลับมาฟังก์ชั่นเหล่านั้น
ในฟังก์ชั่นที่จะผ่านฟังก์ชั่น เป็นพารามิเตอร์ฟังก์ชันอื่น
คุณอาจจะคิดว่าทำไมดีบนโลก ฉันต้องการจะทำสิ่งที่ต้องการนั้น
>> ดีขอบอกว่าผมต้องการ ที่จะใช้ประกอบการที่ผม
ทำงานอย่างหนักเพื่อที่จะสร้างและนำไปใช้ มันพวงของตัวเลขที่แตกต่างกัน
ในอาร์เรย์
ดังนั้นในกรณีนี้ผมมีอาร์เรย์ของ integers-- 1, 4, 7, 2, 5, 10, 56
และผมต้องการที่จะเป็นสองเท่าของพวกเขาทั้งหมด
วิธีการที่เราจะมักจะ จะทำคือการเพียงแค่เขียน
ที่เรียบง่ายสำหรับวงที่ iterates มากกว่าทั้งหมดของพวกเขา
และดำเนินการจัดเรียงของบางอย่าง การดำเนินงานของตารางเหนือพวกเขา
ป้อนค่าใหม่ที่เป็นใหม่ ตัวแปรหรือมากกว่าอาร์เรย์ใหม่ที่นี่
และความคุ้มค่าของการส่งออกของ ผลที่ได้คือแล้วทั้งหมดของอาร์เรย์เหล่านั้น
หรือมากกว่าทุกคน องค์ประกอบที่สองในขณะนี้
>> และเราจะทำเช่นเดียวกัน สำหรับสิ่งที่ cubing มัน
แต่สัญญาณเตือนภัยเล็ก ๆ น้อย ๆ ควรจะออกไป
ที่บอกว่าอาจจะมี วิธีการที่เราจะบาง
จะสามารถลดความซับซ้อนนี้นิด ๆ หน่อย ๆ
และในความเป็นจริงมี
ถ้าเราสามารถสร้าง ฟังก์ชั่นที่ช่วยให้เรา
ที่จะยอมรับในฐานะที่เป็นนักล่า, ฟังก์ชั่นหรือไม่?
ดังนั้นในกรณีนี้ให้ใช้ ดูขัดแย้งเหล่านี้
เรากำลังจะไปรับรายชื่อของคู่
และจากนั้นเรากำลังจะ ที่จะยอมรับฟังก์ชั่น
ในตัวแปรที่เรียกว่าเอฟที่เป็นไป ที่จะใช้คู่และกลับ Double A
และการส่งออกทั้งหมด ฟังก์ชั่นนี้ทั้งหมด
เรียกว่า mapper เป็นไป กลับอาร์เรย์เรียกว่าคู่
>> สิ่งนี้ก็จะให้ฉันไป ทำคือการย้ำไปที่รายการ
และทำสิ่งเดียวกัน แต่ตอนนี้ ฟังก์ชั่นที่ใช้ในแต่ละ
ของแต่ละค่าในรายการว่า
ดังนั้นผมจึงไม่ทราบจริงๆสิ่งที่เป็นฉ
มันไม่สำคัญกับผม
แต่ตราบใดที่มันจะใช้เวลาในสองครั้งที่ ทำการดำเนินการบางอย่างเกี่ยวกับมัน
แล้วส่งกลับ คู่จากนั้นผมก็จะเป็น
สามารถที่จะ map ฟังก์ชั่นที่ทั่ว ทุกองค์ประกอบเดียวในรายการ
>> และประเภทของการเขียนโปรแกรมนี้ ฟังก์ชั่นที่เรียกว่าสูงกว่าการสั่งซื้อ
ที่เรากำลังผ่านฟังก์ชั่น รอบเป็นพารามิเตอร์
และทำสิ่งที่มีฟังก์ชั่น
มันเป็นประเภทเช่นการทั้งหมดเหล่านี้ ความคิดที่เราได้เรียนรู้ใน CS50
และพาพวกเขาจัดเรียง ของในระดับต่อไป
และนี่คือสิ่งที่ CS51 ทุกรูปแบบ
และเพื่อให้เราจะไปในเชิงลึก มากขึ้นในชั้นเรียนเช่นเดียวกับที่
>> แต่ตอนนี้ยังเป็น ที่สำคัญที่นี่เพราะเรา
เห็นมากของฟังก์ชั่น ที่ใช้ในสวิฟท์
ที่เป็นหลักไม่ นี้ที่เรามี
บางตัวเลขอาร์เรย์ของตัวเลขบาง
เรากำลังจะผ่านไปที่ อาร์เรย์เข้า mapper ของเรา
และเรายังจะ ผ่านฟังก์ชั่นบางอย่างที่
ที่เราได้กำหนดไว้แล้วที่นี่
มันเป็นไปได้ที่ตาราง
และเรากำลังจะไปแล้ว ตารางทั้งหมดของตัวเลขเหล่านั้น
และจัดเก็บที่เป็นผลมาจากที่นี่
>> ดังนั้นกรณีนี้เราได้กำหนดไว้ของเรา ฟังก์ชั่นของตัวเองที่เรียกว่า mapper
แต่ตอนนี้สิ่งที่แน่นอนคือ ในความเป็นจริงที่สร้างขึ้นในสวิฟท์
มีความหลากหลายของเป็น ฟังก์ชั่นที่เรียกว่าแผนที่
มีฟังก์ชั่นเป็นแผนที่, มีการลดฟังก์ชั่น
และมีฟังก์ชั่นกรอง ซึ่งเป็นหลักใช้ฟังก์ชั่น
ทุกองค์ประกอบหนึ่งใน รายการที่จะปรับเปลี่ยนพวกเขาในทางใดทางหนึ่ง
>> ผู้ชม: ดังนั้นตั้งแต่คุณจะเปลี่ยน ข้อมูลในรูปแบบอื่น
ผ่าน function--
DAN Armendariz: ขวา
ใช่ดังนั้นฟังก์ชั่น ที่เรายอมรับ
จะเปลี่ยนข้อมูลในทางใดทางหนึ่ง
ในกรณีนี้เรามีทั้ง กู้หน้ามันหรือเรากำลัง cubing มัน
หรือจริงๆที่เราจะได้ดำเนินการ การดำเนินงานที่ไม่เกี่ยวกับมันเลย
>> แต่ให้ฉันแสดงคุณแล้ววิธีนี้ จะไปดูในทางปฏิบัติ
และอีกครั้งที่ผมทำงาน บิตของเวลา ดังนั้นฉันไม่
จะสามารถที่จะไปทั้งหมด ของรหัสที่มาที่นี่ในรายละเอียด
แต่ผมขอแนะนำให้คุณทำอย่างนั้น
เราจะโพสต์ได้โดยเร็ว หลังจากที่พูดคุยเป็นไปได้นี้
>> แต่ถ้าคุณดูที่นี้ สมมติว่าเรามีรายชื่อของตัวเลข
อาร์เรย์ของตัวเลขในน​​ี้ ตัวแปรที่เรียกว่าตัวเลข
แล้วเราต้องการดำเนินการนี​​้ การดำเนินการกรองตัวเลขเหล่านั้น
ดังนั้นกรองที่สูงขึ้น ฟังก์ชั่นการสั่งซื้อที่
ยอมรับอาร์เรย์และฟังก์ชั่น
และองค์ประกอบในการที่ทุก อาร์เรย์จะดำเนินการฟังก์ชั่นที่
>> หากที่กลับมาทำงาน ความจริงจะช่วยให้รายการที่
ถ้าฟังก์ชั่นที่ส่งกลับเท็จ มันจะพ่นออกไปที่รายการ
และจากนั้นก็จะส่งกลับรายการ ที่ทำขึ้นทั้งหมดแล้ว
ของรายการที่ได้รับการกรอง
>> ดังนั้นในคำอื่นนี้คือ ความคิดเดียวกันสมุดคะแนน
เราอาจจะมีความหลากหลายของเกรด เป็นตัวเลขที่เรียกว่าค่านี้
อาจจะเป็น 100 และ 70 และ 40 อื่น ๆ และอื่น ๆ
สิ่งที่ตัวกรองนี้จะแจ้งให้ทราบล่วงหน้า ที่นี้ก็คือน้ำตาลประโยค
สำหรับระบุชื่อฟังก์ชัน
นี้เป็นฟังก์ชั่นที่ไม่ระบุชื่อกล่าวว่า ว่าพารามิเตอร์ที่ผมยอมรับ
เป็นไปได้ถ้ามัน มีค่ามากกว่า 70
แล้วนี้จะกลับจริงซึ่งหมายความว่า รายการที่จะถูกเก็บไว้ในตัวกรองนี้
ดังนั้นขอให้เป็นนิด ๆ หน่อย ๆ เป็นรูปธรรมมากขึ้นเกี่ยวกับเรื่องนี้
ถ้าผมมีอาร์เรย์ของตัวเลขนี้ และประกอบด้วย 100, 70, และ 40,
ผมดำเนินการกรองนี้ การดำเนินการในแต่ละหนึ่งในบรรดา
เพื่อที่ว่าคนแรกคือค่าของ 100 นี้
100 มากกว่าหรือเท่ากับ 70 เป็นความจริงที่
หมายความว่า 100 จะถูกเก็บไว้ใน นี้สำเนาใหม่ของอาร์เรย์นี้
70 นอกจากนี้ยังผ่าน
แต่ไม่ได้ 40
ดังนั้นสิ่งที่จะถูกส่งกลับใน passingCount เป็นอาร์เรย์ขององค์ประกอบที่ 100 และ 70--
100 จุลภาค 70
สิ่งเหล่านี้เป็นเพียงสองคนเท่านั้น รายการที่ถูกเก็บไว้
ดังนั้นเหตุผลที่ฉันเดินผ่านได้อย่างรวดเร็ว จำนวนมากของชนิดของการสั่งซื้อสูงเหล่านี้
สิ่งที่มีเพราะเป็นที่ที่พบบ่อย สิ่งที่คุณจะได้เห็นในสวิฟท์สวย
บ่อยครั้งที่มีประสิทธิภาพการดำเนินงานบางส่วน โดยใช้ฟังก์ชั่นนี้ไวยากรณ์ที่ไม่ระบุชื่อ
>> มีบางสิ่งที่เย็นเป็น
สวิทช์เป็นจริงที่มีประสิทธิภาพในสวิฟท์ ผมหมายถึงเพียงอย่างบ้าคลั่งบ้าที่มีประสิทธิภาพ
คุณสามารถใช้สวิทช์และ คุณจริงสามารถนำไปใช้
ช่วงซึ่งเป็นชนิดของบ้า และทำในสิ่งแฟนซีเช่นนั้น
>> แต่ในไม่กี่นาทีที่ผ่านมา ฉันต้องการที่จะข้ามไปค่อนข้างจะไกล
และแสดงให้คุณเป็นตัวอย่างของวิธีการที่เฉพาะเจาะจง เราสามารถสร้างใน app iOS ของคุณโดยใช้สวิฟท์
ดังนั้นเมื่อคุณกำลังทำ นี้คุณจะต้องใช้เวลา
ดู at-- ในแอปเปิ้ล เอกสารพวกเขา
มีจำนวนมากของบทเรียนที่ดีจริงๆ สำหรับการสร้างแอพลิเคชันครั้งแรกของคุณ
และผมขอแนะนำให้คุณทำ ว่าเป็นเพราะพวกเขาใช้เวลาที่คุณ
ผ่านขั้นตอนทั้งหมดของสิ่งที่ตรงกับ คลิกที่เพื่อสร้างโปรแกรมประยุกต์ iOS
>> แต่ที่นี่เรามีนี้ app iOS
และมันเป็น app ง่ายสวยจริงๆ
ถ้าผมทำงานนี้ให้ฉันแสดง คุณสิ่งที่ดูเหมือนว่า
ทั้งหมดก็เป็นหลักไม่ได้เป็น ดึงจากอินเทอร์เน็ตไฟล์ JSON
ที่ฉันได้เก็บไว้บนเซิร์ฟเวอร์
และที่ไฟล์ JSON กำหนดภาพที่ช่วยให้
ฉันไปรอบแล้วผ่านของฉัน การตรวจสอบภาพจากเว็บเซิร์ฟเวอร์ของฉัน
>> ดังนั้นผมจึงมีที่นี่ getNextImage
โหลดภาพจากอินเทอร์เน็ตที่ และจากนั้นจะแสดงบนหน้าจอ
>> ดังนั้นจึงเป็นเรื่องง่ายสวย
แต่เป้าหมายของที่นี่คือการแสดง คุณวิธีการที่เราสามารถรวมสิ่ง
จากไม่กี่สัปดาห์หลังของ CS50 เป็นแอพลิเคชัน iOS ของคุณที่เกิดขึ้นจริง
ในคำอื่น ๆ อาจจะเป็นหนึ่งใน สิ่งที่คุณจะต้องทำ
คือการมีโปรแกรม iOS ที่ สามารถดึงข้อมูลจากอินเทอร์เน็ต
และแสดงให้ผู้ใช้ข้อมูลบางส่วน
นั่นคือทั้งหมดจุด ของรหัสที่มาที่นี่
>> เพื่อให้มีจำนวนมากที่จะพูดเกี่ยวกับ วิธีการทำ iOS พัฒนาที่เกิดขึ้นจริง
มีจำนวนมากของไวยากรณ์บ้าคือ ที่เราไม่ได้เห็นค่อนข้างยัง
เช่น class เป็นสิ่งที่ชั้นเป็นจริง
ส่วนใหญ่เราสามารถละเว้น ที่ในขณะนี้
>> แต่สังเกตเห็นว่าเราได้มี ภายในนี้ความหลากหลายของสิ่ง
ที่เราได้เห็นแล้วชอบ ฟังก์ชั่นที่มีชื่อเฉพาะ
และเมื่อเราให้ผู้ที่ ฟังก์ชั่นชื่อที่ถูกต้อง
ที่คาดว่าโดย iOS ของคุณ, ในความเป็นจริง นี้รู้สึกนิด ๆ หน่อย ๆ ที่มีมนต์ขลัง
แต่เมื่อคุณสร้าง แอพลิเคชัน iOS ของคุณมี
เป็นชื่อที่ฟังก์ชั่นที่เฉพาะเจาะจง โดยจะเรียกว่าโทรศัพท์ตัวเอง
เป็นโปรแกรมที่มีการโหลดที่จะลอง การสร้างกระบวนการที่จริง
วิ่งใช้งานของคุณ
ดังนั้นอีกครั้งมีจำนวนมากของสิ่งที่ฉัน ต้องปัดสวะที่นี่เพื่อให้เรา
ที่จะพูดคุยเกี่ยวกับเรื่องนี้โดยเฉพาะ
แต่ผมแนะนำให้คุณไปดูที่อาจจะ การสัมมนา iOS อื่น ๆ แต่ยังมีบางส่วน
บทเรียนออนไลน์ที่ทำ งานที่ดีมากในการอธิบาย
ข้อมูลเฉพาะ
>> แต่เราจะได้เห็นคู่ของสิ่งที่ เป็นที่น่าสนใจจากรหัสที่นี่
ขอให้สังเกตว่าถ้าเรามีงบ
โดยวิธีการที่สำคัญอย่างหนึ่ง ถ้าสิ่งที่เกี่ยวกับงบ
คือว่าวงเล็บรอบ นิพจน์บูลีนเป็นตัวเลือก
แต่วงเล็บปีกกาจะไม่เลือก ไม่ว่ากี่บรรทัดหรือหลายรหัส
ที่คุณมีในงบถ้า
คุณไม่สามารถมีถ้างบ โดยไม่ต้องวงเล็บปีกกาในสวิฟท์
>> และนี่คือดีเรียงลำดับของโง่
แต่มีเหตุผลทางประวัติศาสตร์ที่
ก็ควรที่จะช่วยให้คุณประหยัดจากตัวเอง
เช่นนี้ตัวอย่างเช่นคุณไม่สามารถ ขจัดวงเล็บปีกการอบที่
ถ้าคำสั่ง
เหล่านั้นในความเป็นจริงที่จำเป็น
ดังนั้นผมจึงขอแนะนำให้คุณ ดูที่นี้.
แต่มีอีกหนึ่ง สร้างที่ฉันต้องการ
แสดงที่เกี่ยวกับสวิฟท์ เป็นใหม่ 2.0 เมื่อเทียบกับสวิฟท์
กับรุ่นเก่าของสวิฟท์ ซึ่งเป็นดังต่อไปนี้
ลองมาดูที่ผมวางไว้ที่นี่?
>> ดังนั้นในการทำงานที่เรียกว่า fetchJSON ฟังก์ชั่นนี้
เป็นผู้รับผิดชอบสำหรับการดึงที่ JSON ไฟล์จาก URL ที่เกิดขึ้นเพียงเพื่อ
ที่จะทำงานบน IDE CS50 ของฉัน
ฉันเพิ่งเริ่มต้นอาปาเช่ ใส่แฟ้ม JSON ของฉันอยู่ที่นั่น
และฉันสามารถที่จะดึงที่แล้ว ข้อมูลจากอินเทอร์เน็ตโดยใช้
ฟังก์ชั่นนี้และ URL นี้ ที่ให้บริการโดยโทรศัพท์
มันให้บริการโดย ไลบรารีที่คุณใช้เมื่อ
คุณกำลังทำบางการพัฒนาแอป iOS
>> ที่นี่ขอให้สังเกตว่ามีความผิดปกตินี้ สร้างการสร้างประโยคที่เรียกว่ายาม
และจริงๆทั้งหมดนี้อยู่ใน สวิฟท์เป็นวิธีการตรวจสอบ
บางสิ่งบางอย่างที่มี ได้พบก่อนที่คุณจะ
ดำเนินการกับส่วนที่เหลือของการทำงาน
ดังนั้นผมจึงอาจจะมีการใช้ ประเภทนี้ไม่จำเป็น
ฉันจะได้พบ URL โดย ฟังก์ชั่นการทำงานนี้ NSURL
และการจัดเก็บที่เป็น URL ที่ คงที่และการตรวจสอบแล้ว
URL เพื่อดูว่าเป็นศูนย์เพราะมัน กำลังจะกลับเลือกประเภท
และถ้ามันเป็นศูนย์แล้วฉันจะ พิมพ์ออกมามีข้อผิดพลาดแล้วกลับ
>> แต่สิ่งที่ช่วยให้ยาม เราทำคือสิ่งที่มาก
แต่ให้แน่ใจว่ามันเป็น จริงกรณีที่สมาชิก
ได้รับการจัดตั้งอย่างถูกต้องโดย NSURL
และถ้ามันเป็นแล้วมัน ข้ามมากกว่านี้และมัน
จะช่วยให้คุณดำเนินการด้วย สมาชิกที่ได้รับการกำหนดไว้อย่างถูกต้อง
แต่ถ้าเป็นกรณีที่ url ที่ไม่ได้กำหนดไว้อย่างถูกต้อง
ถ้าฟังก์ชั่นนี้กลับข้อผิดพลาด หรือบางสิ่งที่ไม่คาดคิดอื่น ๆ
ที่เกิดขึ้นจริง, สร้างยามนี้ ช่วยให้เราสามารถแล้วออกที่ข้อผิดพลาด
และกลับทันที
ใช่?
>> ผู้ชม: ดังนั้นมันเป็นชนิด เช่นถ้าแล้วอื่น?
DAN Armendariz: มันเป็นชนิดของ เช่นถ้าอื่นแล้วใช่
ยกเว้นว่า URL นี้แล้ว ที่กำหนดไว้สำหรับทุกอย่างที่ด้านล่างนี้
ถ้ามันผ่านยามนี้แล้วมัน จะจริงจะเต็มไปด้วยข้อมูล
และใช้งานในส่วนที่เหลือ รหัสแหล่งที่มาในการทำงานของคุณ
ดังนั้นผมจึงสงสัยว่าคุณกำลังจะไป เริ่มเห็นยามนี้เช่นกัน
และมีสติในการที่
>> ดังนั้นเพียงแค่มองไปที่คู่ของอื่น ๆ สิ่งขวาที่นี่นี่คือสิ่งที่,
ที่คุณคิดว่าขึ้นอยู่เพียงแค่ในสิ่งที่ เรากำลังพูดถึงมาก่อนหรือไม่
>> ผู้ชม: คิดว่ามันจะทำงานในรายการหรือไม่
>> DAN Armendariz: เพื่อให้ใกล้ชิด
นี้เป็นฟังก์ชั่นที่เราจะกำหนด
และเราจะป้อนฟังก์ชั่นที่ เป็นอาร์กิวเมนต์ฟังก์ชั่นนี้ที่นี่
>> ผู้ชม: [ไม่ได้ยิน] หากไม่ได้ศูนย์
ดังนั้นจึงเป็นในรายการใช่มั้ย?
>> DAN Armendariz: ถ้าข้อผิดพลาดไม่ได้เป็นศูนย์ เพื่อให้ is-- ดังนั้นผมจึงต้องเลื่อน
ดีขอดูฉันไม่สามารถจริงๆ เลื่อนไปทางขวาที่นี่
ข้อผิดพลาดข้อโต้แย้งที่เป็น ส่งผ่านไปยังฟังก์ชั่นนี้ที่ไม่ระบุชื่อ
นี้เป็นฟังก์ชั่นที่ไม่ระบุชื่อ
มันไม่มีชื่อ
แต่เราจะยอมรับทั้งสาม ข้อโต้แย้งข้อมูลการตอบสนองและความผิดพลาด
และมันก็เป็นไปได้ที่จะกลับมาเป็นโมฆะดังนั้น มันจะไม่กลับอะไร
และนี่คือเนื้อหา ฟังก์ชั่นที่
แล้วเรามีการเข้าถึงที่อยู่ภายใน ฟังก์ชั่นให้กับแต่ละขัดแย้งเหล่านี้
>> ดังนั้นจึงเป็นลมบ้าหมู ทัวร์ของภาษา
แต่ผมหวังกับเรื่องนี้ หวังว่าที่คุณใช้
ดูที่บางส่วนของบทเรียน โดยเฉพาะการพัฒนา iOS กับสวิฟท์
โดยเฉพาะอย่างยิ่งถ้าคุณไป นักพัฒนาเว็บแอปเปิ้ล Page--
พวกเขามีจำนวนมากที่ดีจริงๆ บทเรียนที่จะให้คุณเริ่มต้น
เพียง แต่หวังว่าเวลานี้การพูดคุย เกี่ยวกับไวยากรณ์ตัวเองได้รับ
คุณพอที่จะเริ่มต้นด้วยการที่
>> เราจะโพสต์ทั้งหมดของแหล่งนี้ รหัสบนเว็บไซต์ของการสัมมนา
เร็วที่สุดเท่าที่เป็นไปได้และยังสไลด์ เพื่อให้คุณมีการอ้างอิงทั้งหมดเหล่านั้น
แต่โชคดีกับโครงการของคุณ
และขอขอบคุณทุกท่านเป็นอย่างมากสำหรับการมา
>> [APPLAUSE]