ยินดีต้อนรับกลับ.
มาต่อกันที่รายการ
จนถึงตอนนี้ วงเล็บเหลี่ยมเหล่านี้ เราเคยเห็นมาก่อนแล้วใช่ไหม
เราเห็นพวกเขาเมื่อทำงานกับสตริง
และเช่นเดียวกับสตริง รายการนั้นค่อนข้างคล้ายกันที่เราสามารถใช้การแบ่งส่วนรายการได้
หากคุณจำการสไลซ์สตริงได้ เรามีบางอย่างเช่นสวัสดี และเราสามารถกำหนดให้กับสตริงได้ สมมติว่าสตริงตัวแปรและเราสามารถทำสตริงแล้วสไลซ์ได้
เลยทำอะไรแบบนี้
ที่ที่เราเริ่มต้น หยุด และก้าวผ่านไป
เพื่อให้เราเริ่มต้นที่ดัชนีศูนย์และสิ้นสุดที่ดัชนีสอง
แล้วก็ไปทีละคน
การแบ่งส่วนรายการก็มีให้เราเช่นกัน
มาทำให้การ์ดใบนี้ใหญ่ขึ้นหน่อย
และคุณสามารถทำให้ทุกอย่างสะอาดขึ้นได้ด้วยการจัดรูปแบบด้วยวิธีนี้
เอาล่ะ เราควรเพิ่มอะไรในรถเข็นของเราดี?
เราจะเพิ่มของเล่นด้วย
แล้วรู้อะไรมั้ย?
ตอนนี้ Amazon ทำร้านขายของชำ
มาเติมองุ่นแสนอร่อยกันดีกว่า
สุดยอด.
ตอนนี้ สมมติว่าฉันต้องการรับสินค้าทุกชิ้นในรถเข็น
เราก็แค่ทำสิ่งนี้
และเรามีรายการทั้งหมดของเรา
แต่ลองใช้การแบ่งส่วนรายการ
สมมติว่าฉันต้องการคว้าจากรายการแรกไปยังรายการที่สอง
ถ้าฉันคลิกเรียกใช้
ฉันได้รับสมุดบันทึกและแว่นกันแดด
บางทีฉันอาจจะอยากไปให้ถึงที่สุด แต่ข้ามทุกวินาที
ฉันได้รับสมุดบันทึกและของเล่น
เราเริ่มเป็นศูนย์
เราก้าวข้ามไปที่ของเล่น และเราก้าวข้าม และทำเสร็จแล้ว
สุดยอด.
และนี่คือสิ่งที่เราได้เห็นแล้วเมื่อพูดกับเครื่องสาย
แต่ที่นี่เป็นที่ที่น่าสนใจ
จำได้ไหมว่าฉันบอกว่าสตริงไม่เปลี่ยนรูป?
นั่นหมายความว่าเราไม่สามารถเปลี่ยนแปลงได้
ถูกต้อง.
และเราพูดถึงเรื่องนี้เมื่อเรามีสตริงเช่นสวัสดี
ฉันไม่สามารถทำ Greet zero เท่ากับ Z ได้
ฉันจะได้รับข้อผิดพลาดที่นี่
ฉันได้รับวัตถุ str ไม่สนับสนุนการกำหนดรายการ
มันไม่เปลี่ยนรูป
แต่สิ่งที่น่าสนใจที่มีรายการคือสามารถเปลี่ยนแปลงได้
เพื่อที่ว่าถ้าฉันเปลี่ยนรถเข็น Amazon ของฉัน
และบอกว่า คุณรู้อะไรไหม ฉันไม่ต้องการสมุดบันทึกจริงๆ
ผมจะหยิบของชิ้นแรก นั่นก็คือโน๊ตบุ๊ค
และแทนที่จะเป็นสมุดบันทึกฉันต้องการอะไร
เราจะบอกว่าเราต้องการแล็ปท็อปเครื่องใหม่
เป็นการอัปเกรดครั้งใหญ่
เมื่อฉันพิมพ์รถเข็น Amazon นี้
ดูนั่นสิ
ฉันสามารถเปลี่ยนรายการนี้ได้
และมันไม่ได้ทำให้ฉันมีข้อผิดพลาดในแง่นั้น
รายการเปลี่ยนแปลงได้
เราเพียงแค่เปลี่ยนชั้นวางหนังสือหน่วยความจำของโน้ตบุ๊กคอมพิวเตอร์ของเรา และฉันพูดว่า เฮ้ เปลี่ยนเป็นแล็ปท็อป
และพวกเขาให้เราทำอย่างนั้น
มันเยี่ยมมาก
แต่มาลองอะไรที่นี่กัน
จะเกิดอะไรขึ้นหากฉันสร้างงานพิมพ์อื่นที่นี่ และในรถเข็นของ Amazon ฉันจะใช้การแบ่งส่วนรายการเพื่อสมมติว่าฉันต้องการรายการจากดัชนีหนึ่งไปจนถึงดัชนีสาม
เรียกใช้สิ่งนี้และดูว่าเกิดอะไรขึ้น
ลองเดาสิ
นั่นคือสิ่งที่คุณคาดหวัง?
มาดูรหัสนี้กัน
พอถึงบรรทัดที่สิบ เราก็หยิบตะกร้าของ Amazon ที่อัพเดทเป็นโน้ตบุ๊ก แล้วหยิบขึ้นมาอันที่หนึ่ง
สองสาม.
นั่นคือแว่นกันแดด
สองของเล่น
ดังนั้นศูนย์หนึ่งสอง
แล้วเราก็หยุดที่ตีสาม
เพียงเพื่อให้เข้าใจง่ายขึ้น
เริ่มจากศูนย์ตรงนี้กันก่อน
เพื่อให้เราเห็นว่าแล็ปท็อปมีการเปลี่ยนแปลง
จากนั้นในบรรทัดที่สอง ในบรรทัดที่ 11 เราพิมพ์รถเข็นของ Amazon
แต่เดี๋ยวก่อน
รายการนี้ไม่เปลี่ยนแปลง
และนั่นเป็นเพราะว่าด้วยการแบ่งส่วนรายการ เรากำลังสร้างรายการใหม่
สำเนาใหม่ของรายการนี้
ตรงนี้ เรากำลังสร้างรายการใหม่ทั้งหมด เพื่อที่ผมจะกำหนดมันให้กับตัวแปร รถเข็นใหม่
จะเป็นรถเข็นของ Amazon
และลองทำแบบเดียวกันที่นี่
และการ์ดใหม่ก็เป็นรายการใหม่ทั้งหมดด้วยตัวมันเอง
ฉันสามารถเปลี่ยนรถเข็นใหม่ได้
สมมุติว่าศูนย์เท่ากับหมากฝรั่ง
และถ้าฉันพิมพ์สิ่งนี้
คุณเห็นว่า?
ฉันมีรายการใหม่แยกกันสองรายการ แต่รายการสามารถเปลี่ยนแปลงได้เนื่องจากฉันสามารถเปลี่ยนแปลงอะไรก็ได้ที่อยู่ในดัชนีเมื่อใดก็ได้ตามต้องการ
และทุกครั้งที่เราแยกส่วนรายการ เราจะสร้างสำเนาใหม่ของรายการนั้น
แต่ฉันมีคำถามยากสำหรับคุณที่นี่
จะเกิดอะไรขึ้นถ้าฉันทำสิ่งนี้
ถ้าฉันเรียกใช้สิ่งนี้
อืม.
คุณเห็นไหม
แทนที่จะแบ่งรายชื่อของฉัน ฉันแค่บอกว่าบัตรใหม่จะเท่ากับรถเข็นของ Amazon
และฉันเปลี่ยนดัชนีรถเข็นใหม่เป็นศูนย์ให้เท่ากับหมากฝรั่ง
แต่ตอนนี้รถเข็น Amazon ของฉันก็ได้รับการแก้ไขเช่นกัน
ทำไมถึงเป็นอย่างนั้น?
และนี่เป็นคำถามที่ยุ่งยากเล็กน้อยที่คุณอาจพบในการสัมภาษณ์
เหตุผลก็คือว่า วิธีที่ฉันทำเท่ากับตอนนี้ หมายความว่า เฮ้ รถเข็นใหม่กำลังจะเท่ากับรถเข็นของอเมซอน
และรถเข็นของ Amazon เท่ากับอะไร?
รถเข็นของ Amazon ชี้ไปที่ใดที่หนึ่งในหน่วยความจำในเครื่องของเราว่า เฮ้ นี่คือสิ่งที่รถเข็นของ
Amazon เป็น
เพราะที่นี่เราไม่ได้คัดลอกรายการ
แต่เราแค่พูดว่า เฮ้ มูลค่าของบัตรใหม่คือสิ่งที่อยู่ในความทรงจำของรถเข็นของ Amazon
ตอนนี้เมื่อเราปรับเปลี่ยนรถเข็นใหม่เป็นเพียงการเปลี่ยนรถเข็นของ Amazon ไปตลอดทางจากที่นี่
นี่จึงเป็นแนวคิดที่สำคัญ
หากคุณต้องการ สมมติว่าคัดลอกรายการ แล้วคุณทำสิ่งนี้
ที่คุณคัดลอกรายการทั้งหมด
และนี่คือสิ่งที่คุณจะเห็นได้มากมายในฐานรหัส
แต่บรรทัดนี้บอกว่า เฮ้ ฉันต้องการสร้างสำเนา
ใช้การแบ่งส่วนรายการเพื่อคัดลอกรถเข็น Amazon นี้ และมันจะเท่ากับรถเข็นใหม่ ดังนั้นตอนนี้ถ้าฉันเรียกใช้สิ่งนี้
คุณจะเห็นว่ารถเข็นของ Amazon เดิมยังคงเหมือนเดิม แต่ตอนนี้รถเข็นใหม่มีบางอย่างที่แตกต่างออกไป
นี่คือ gotcha ด่วนที่คุณต้องทำความคุ้นเคย
แต่มันเป็นแนวคิดที่สำคัญ แนวคิดของการคัดลอกกับการแก้ไขรายการ
และนี่คือสิ่งที่เราจะสำรวจเพิ่มเติมอีกเล็กน้อยในวิดีโอคู่หน้า
พักผ่อนก่อนนะครับ แล้วเจอกันใหม่ตอนหน้าครับ
ลาก่อน.