ส่วนที่ 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