ส่วนที่ 2 สาธิตวิธีการต่างๆ ส่วนใหญ่ที่คลาสและวิธีการต่างๆ สามารถใช้ใน Kotlin ตอนที่ 3 จะสาธิตสิ่งเจ๋งๆ ส่วนใหญ่ที่ Kotlin สามารถทำได้กับตัวแปร นี่คือจุดที่สิ่งต่าง ๆ เริ่มน่าสนใจและสนุกสนาน
ใน Kotlin ตัวแปรสมาชิก (ตัวแปรระดับคลาส) เรียกว่า “คุณสมบัติ” ในขณะที่ตัวแปรท้องถิ่นเรียกว่า “ท้องถิ่น” เนื่องจากหลายส่วนของโพสต์บนบล็อกนี้กล่าวถึงสิ่งต่าง ๆ ที่สามารถใช้ได้กับทั้งทรัพย์สินและคนในท้องถิ่น คำว่า "ตัวแปร" จึงอาจใช้แทนได้
ตัวแก้ไขการมองเห็น (สาธารณะ/ส่วนตัว/ค่าเริ่มต้น/ภายใน)
Kotlin เช่นเดียวกับ Java มีตัวแก้ไขการมองเห็นสี่ตัว มีตัวดัดแปลง public
, protected
และ private
ตามปกติ และพวกมันทำงานในลักษณะเดียวกับ Java เป็นส่วนใหญ่:
public
อ็อบเจ็กต์สามารถมองเห็นได้ทุกที่ที่เข้าถึงคลาสที่ประกาศไว้public
ถือว่าซ้ำซ้อนเนื่องจากตัวแก้ไขเริ่มต้นสำหรับตัวแปรคือpublic
protected
อ็อบเจ็กต์จะมองเห็นได้เฉพาะกับคลาสที่ประกาศไว้และคลาสย่อยเท่านั้นprivate
วัตถุจะมองเห็นได้เฉพาะภายในคลาสที่ประกาศไว้ ข้อแตกต่างเพียงอย่างเดียว
ตัวแก้ไขที่สี่คือ internal
ออบเจ็กต์ที่มีตัวปรับแต่งนี้จะปรากฏแก่ทุกคลาสในโมดูลเดียวกันเท่านั้น
ค่าคงที่
ค่าคงที่ใน Kotlin ทำงานแตกต่างกับ Java เล็กน้อย สำหรับผู้เริ่มต้น สามารถเข้าถึงได้จากทุกที่ในแพ็คเกจหรือโมดูลที่ประกาศไว้ ซึ่งหมายความว่าคุณสามารถสร้างไฟล์เพื่อเก็บค่าคงที่ทุกค่าสำหรับโมดูลได้ หากจำเป็นต้องใช้ค่าคงที่สาธารณะน้อยกว่า ตัวแก้ไขการมองเห็นตัวใดตัวหนึ่งจะทำงานได้ ข้อควรจำ: โมดิฟายเออร์ protected
จะไม่ทำงานกับค่าคงที่ในบริบทนี้ เนื่องจากอยู่นอกคลาส
ทะเยอทะยานและเซ็ตเตอร์
ใน Kotlin คุณสมบัติทั้งหมดมีตัวรับและตัวตั้งค่าที่มองไม่เห็น คุณสมบัติสามารถเข้าถึงได้ผ่าน getters และ setters เท่านั้น getter และ setters เริ่มต้นมีความโปร่งใส ดังนั้นเราจึงเข้าถึงชื่อตัวแปรแทน ไม่จำเป็นต้องเพิ่ม getters และ setters ด้วยตนเอง เว้นแต่จะต้องแก้ไขตัวแปรก่อนที่จะตั้งค่า/รับ Kotlin มีคอมโบ getter/setter ที่มีประโยชน์สำหรับสิ่งนี้:
ในกรณีนี้ department
อาจเป็นค่าว่างได้ แต่เราไม่ต้องการรับหรือตั้งค่าเป็นค่าว่าง จำส่วนที่เกี่ยวกับ Kotlin ที่มี getters และ setters ในตัวได้ไหม? เราไม่จำเป็นต้องโทร getDepartment()
เนื่องจากวิธีการนั้นโปร่งใสโดยสิ้นเชิง แต่เราเพียงแค่เข้าถึงตัวแปรตามปกติ:
นี่อาจเป็นเวลาที่ดีที่จะแสดงโค้ดไบต์ที่ถอดรหัสแล้วและล้างข้อมูลแล้วสำหรับโค้ดด้านบน:
ทั้งหมดได้รับการห่อหุ้มอย่างดีเพื่อการใช้งานใน Java
หากคุณต้องการ getter และ setter แบบกำหนดเอง มาตรฐาน Kotlin แนะนำให้สร้างคุณสมบัติจำลองโดยไม่มีฟิลด์สำรอง:
bytecode ที่ถอดรหัสแล้วสำหรับสิ่งนี้จะเป็น:
โอเปอเรเตอร์เอลวิส
มีนิพจน์ต่อไปนี้ใน GettersAndSetters
:
สิ่งนี้สามารถแก้ไขได้โดยตัวดำเนินการ Elvis (?:
):
นี่คือนิพจน์ชวเลขที่สะดวกซึ่งจะตั้งค่าตัวแปรที่เป็นโมฆะหากไม่ใช่ค่าว่าง หรือตั้งค่าเป็นค่าใดก็ตามที่อยู่อีกด้านหนึ่งของนิพจน์เอลวิส (หรือส่งข้อยกเว้น หากมีประโยชน์)
การยืนยันที่ไม่เป็นโมฆะ
ดังที่แสดงในส่วนที่ 1 และ 2 ตัวแปรจะถูกทำให้เป็นโมฆะโดยใช้อักขระ ?
การตรวจสอบค่าว่างสามารถทำได้เพื่อกำหนดตัวแปรที่เป็นค่าว่างให้กับตัวแปรที่ไม่เป็นค่าว่าง หากสถานการณ์เกิดขึ้นเมื่อตัวแปรที่เป็น null ต้องไม่เป็น null ตัวดำเนินการ !!
(ไม่ใช่ null) สามารถต่อท้ายตัวแปรได้เมื่อใช้งาน สิ่งนี้จะทำให้เกิดข้อยกเว้นหากตัวแปรเป็นโมฆะ:
ตัวดำเนินการที่ไม่ใช่ null จะแปลงประเภท nullable เป็นประเภทที่ไม่ใช่ null การยืนยันคุณสมบัติและตัวแปรที่ไม่ใช่ Null ควรทำโดยเร็วที่สุด สิ่งนี้จะส่งผลให้เกิดข้อผิดพลาดที่อาจเกิดขึ้นได้ตั้งแต่เนิ่นๆ ในการเรียกใช้โค้ด
Lateinit
เมื่อมีการประกาศ var
ที่ไม่ใช่ค่าว่าง โดยปกติจะต้องกำหนดทันที โมดิฟายเออร์ lateinit
อนุญาตให้ var
ถูกประกาศว่างและกำหนดในภายหลัง:
ต้องตั้งค่าเป็น alateinit var
มิฉะนั้น UninitializedPropertyAccessException
จะถูกส่งออกไปเมื่อมีการเข้าถึง:
การแก้ไขสตริง
การแก้ไขสตริงเป็นหนึ่งในฟีเจอร์ Kotlin ที่ฉันชื่นชอบ อนุญาตให้เพิ่มตัวแปรลงใน String โดยไม่ต้องอาศัยการต่อข้อมูล:
บนพื้นผิวมันดูเรียบง่าย รหัสไบต์ที่ถอดรหัสแล้วใช้การต่อข้อมูลเพียงอย่างเดียว:
สามารถใช้การเรียกเมธอดได้โดยล้อมรอบด้วย ${}
:
ข้อมูลข้างต้นจะถูกรวบรวมเป็นการต่อข้อมูลแบบง่ายๆ ดังนั้นอย่ากังวลว่าการดำเนินการนี้จะมีราคาแพง
การแก้ไขสตริงยังใช้งานได้กับนิพจน์:
มันไม่ได้จำกัดแค่เพียงเลขคณิตเท่านั้น:
การแก้ไขยังสามารถซ้อนกันได้ สิ่งนี้สามารถนำไปใช้ในทางที่ผิดเพื่อสร้างตรรกะที่ไร้สาระและบ้าบอซึ่งรับประกันว่าจะดึงดูดความโกรธเกรี้ยวของเพื่อนร่วมงานของคุณ:
เข้าร่วมToString
joinToString
เป็นวิธีที่สะดวกซึ่งส่งออกเนื้อหาของคอลเลกชันเป็น String
สามารถกำหนดคำนำหน้า ส่วนต่อท้าย และตัวคั่นได้ สุดท้ายนี้ สามารถระบุจำนวนองค์ประกอบสูงสุดที่จะเพิ่มใน String
ได้:
ความเท่าเทียมกันของสตริง
Kotlin มีมุมมองที่เป็นผู้ใหญ่มากขึ้นเกี่ยวกับความเท่าเทียมกันของสตริงมากกว่า Java ไม่จำเป็นต้องใช้เมธอด .equals()
อีกต่อไป ถูกตัอง. สตริงสามารถตรวจสอบความเท่าเทียมกันได้ในลักษณะเดียวกับสิ่งอื่น:
การหล่ออัจฉริยะ
ฉันบันทึกสิ่งที่ดีที่สุดไว้เป็นครั้งสุดท้าย Kotlin มีระบบหล่ออัจฉริยะที่น่าทึ่ง มันจะจดจำสิ่งที่ตัวแปรถูกส่งไป สิ่งนี้ทำให้มีโค้ดที่สะอาดกว่าการส่งตัวแปรอย่างต่อเนื่อง:
นี่คือจุดสิ้นสุดของส่วนที่ 3 เมื่อเทียบกับส่วนที่ 1 และ 2 ส่วนที่ 3 มีเนื้อหาที่ชุ่มฉ่ำมากกว่าที่จะทำให้คุณตะลึง ภาคสี่น่าจะดีกว่านี้
สามารถดูตัวอย่างส่วนที่ 3 ได้ "ที่นี่"
สามารถดูส่วนที่ 4 ของซีรีส์ได้ "ที่นี่"
เผยแพร่ครั้งแรกที่ www.k0ma.co.za เมื่อวันที่ 4 พฤศจิกายน 2018