วิธีการสวิฟท์
สวิฟท์เป็นหน้าที่ของวิธีการที่เกี่ยวข้องกับบางประเภท
ใน Objective-C, ชั้นเรียนเป็นวิธีเดียวที่กำหนดชนิด แต่สวิฟท์, คุณไม่เพียง แต่สามารถเลือกได้ว่าคุณต้องการที่จะกำหนดระดับ / struct / enum แต่ยังมีความยืดหยุ่นในประเภท (Class / struct / enum) ที่คุณสร้างขึ้นอยู่กับวิธีการนิยาม
วิธีการเช่น
ในภาษาสวิฟท์, วิธีการเช่นเป็นชั้นโดยเฉพาะอย่างยิ่งโครงสร้างหรือแจกแจงกรณีประเภท
วิธีการเช่นมีวิธีการดังต่อไปนี้:
คุณสามารถเข้าถึงและปรับเปลี่ยนคุณสมบัติเช่น
ตัวอย่างให้ฟังก์ชั่นที่เกี่ยวข้องกับวัตถุ
ตัวอย่างของวิธีการที่จะเขียนมันเป็นรอบ ๆ ระหว่างประเภทของการจัดฟัน ({})
ตัวอย่างของวิธีการส่อสามารถเข้าถึงวิธีการทั้งหมดและคุณสมบัติกรณีอื่น ๆ ประเภทที่มันกรรมสิทธิ์
ตัวอย่างของวิธีการเท่านั้นที่สามารถเรียกว่าอินสแตนซ์โดยเฉพาะอย่างยิ่งของชั้นที่มันเป็น
วิธีการเช่นนี้ไม่สามารถแยกจากกันบนอินสแตนซ์ที่มีอยู่จะเรียกว่า
ไวยากรณ์
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
ตัวอย่าง
import Cocoa class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } // 初始计数值是0 let counter = Counter() // 计数值现在是1 counter.increment() // 计数值现在是6 counter.incrementBy(5) print(counter.count) // 计数值现在是0 counter.reset() print(counter.count)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
6 0
ระดับเคาน์เตอร์กำหนดสามวิธีเช่น:
-
increment
เพื่อที่เคาน์เตอร์จะเพิ่มขึ้นโดยหนึ่ง; -
incrementBy(amount: Int)
ทำให้เคาน์เตอร์โดยค่าจำนวนเต็มระบุจะเพิ่มขึ้น; -
reset
เคาน์เตอร์ถูกตั้งค่าเป็น 0
Counter
ชั้นนี้ยังประกาศแอตทริบิวต์ตัวแปร count
ใช้มันเพื่อติดตามของมูลค่าปัจจุบันนับ
ชื่อพารามิเตอร์ท้องถิ่นและชื่อของวิธีการที่พารามิเตอร์ภายนอก
พารามิเตอร์ฟังก์ชั่นสวิฟท์สามารถมีทั้งชื่อท้องถิ่น (ในร่างกายของฟังก์ชั่นที่ใช้ภายใน) และชื่อภายนอก (ใช้เมื่อเรียกฟังก์ชั่น
วิธีการที่รวดเร็วและวิธี Objective-C ที่คล้ายกันมาก เช่นเดียวกับใน Objective-C, เช่นเดียวกับชื่อของสวิฟท์ในวิธีการที่มักจะเป็นคำบุพบทจุดกับวิธีการพารามิเตอร์แรกตัวอย่างเช่น: ด้วยสำหรับโดยและอื่น ๆ
เริ่มต้นเพียง Swift วิธีการของพารามิเตอร์แรกชื่อของชื่อพารามิเตอร์ในท้องถิ่นนั้นเริ่มต้นในเวลาเดียวกันกับชื่อพารามิเตอร์ชื่อพารามิเตอร์สองและต่อมาทั่วโลก
ตัวอย่างต่อไปนี้ 'No1' ประกาศในประเทศในชื่อพารามิเตอร์ในสวิฟท์ 'No2' สำหรับการประกาศทั่วโลกและเข้าถึงได้ผ่านทางโปรแกรมภายนอก
import Cocoa class division { var count: Int = 0 func incrementBy(no1: Int, no2: Int) { count = no1 / no2 print(count) } } let counter = division() counter.incrementBy(1800, no2: 3) counter.incrementBy(1600, no2: 5) counter.incrementBy(11000, no2: 3)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
600 320 3666
ไม่ว่าจะเป็นเพื่อให้การตั้งค่าชื่อภายนอก
เราบังคับอาร์กิวเมนต์แรกที่จะเพิ่มชื่อภายนอกกับชื่อของชื่อท้องถิ่นกับการใช้งานภายนอก (SWIFT 2.0 ก่อนที่จะใช้เครื่องหมาย #)
แต่เราสามารถใช้มันยังขีดล่าง (_) เพื่อตั้งข้อโต้แย้งสองและต่อมาไม่ได้ให้ชื่อภายนอกimport Cocoa class multiplication { var count: Int = 0 func incrementBy(first no1: Int, no2: Int) { count = no1 * no2 print(count) } } let counter = multiplication() counter.incrementBy(first: 800, no2: 3) counter.incrementBy(first: 100, no2: 5) counter.incrementBy(first: 15000, no2: 3)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
2400 500 45000
สถานที่ให้บริการด้วยตนเอง
ตัวอย่างของประเภทแต่ละคนมีคุณสมบัติที่เรียกว่านัยในตนเองตรงเช่นเดียวกับอินสแตนซ์ของตัวเอง
คุณสามารถใช้ตัวเองโดยปริยายทรัพย์สินในอินสแตนซ์วิธีการเช่นการอ้างอิงเช่นปัจจุบัน
import Cocoa class calculations { let a: Int let b: Int let res: Int init(a: Int, b: Int) { self.a = a self.b = b res = a + b print("Self 内: \(res)") } func tot(c: Int) -> Int { return res - c } func result() { print("结果为: \(tot(20))") print("结果为: \(tot(50))") } } let pri = calculations(a: 600, b: 300) let sum = calculations(a: 1200, b: 300) pri.result() sum.result()
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
ปรับเปลี่ยนวิธีการพิมพ์ค่าอินสแตนซ์
โครงสร้างภาษาสวิฟท์และ enumerations ประเภทค่า โดยทั่วไปชนิดของค่าทรัพย์สินที่ไม่สามารถแก้ไขได้ในวิธีการของอินสแตนซ์
แต่ถ้าคุณต้องการจริงๆที่จะเปลี่ยนโครงสร้างหรือคุณสมบัติที่ระบุในลักษณะเฉพาะคุณสามารถเลือกรูปแบบ (กรรมวิธี) วิธีแล้ววิธีการที่สามารถเปลี่ยนคุณสมบัติจากวิธีการภายในการเปลี่ยนแปลงใด ๆ และมันไม่ ในตอนท้ายของวิธีการที่มันจะถูกทิ้งไว้ในโครงสร้างเดิม
วิธีนี้ยังสามารถให้มันได้รับมอบหมายให้บริการตนเองโดยนัยตัวอย่างใหม่ของอินสแตนซ์ใหม่นี้จะเข้ามาแทนที่เช่นเดิมด้วยวิธีการ
import Cocoa struct area { var length = 1 var breadth = 1 func area() -> Int { return length * breadth } mutating func scaleBy(res: Int) { length *= res breadth *= res print(length) print(breadth) } } var val = area(length: 3, breadth: 5) val.scaleBy(3) val.scaleBy(30) val.scaleBy(300)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
9 15 270 450 81000 135000
ในตัวแปรกระบวนการที่กำหนดให้กับตัวเอง
วิธีตัวแปรสามารถกำหนดคุณลักษณะของตนเองโดยนัยตัวอย่างใหม่
import Cocoa struct area { var length = 1 var breadth = 1 func area() -> Int { return length * breadth } mutating func scaleBy(res: Int) { self.length *= res self.breadth *= res print(length) print(breadth) } } var val = area(length: 3, breadth: 5) val.scaleBy(13)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
39 65
วิธีการประเภท
วิธีการเช่นเป็นวิธีการที่เรียกว่าตัวอย่างของประเภทที่คุณยังสามารถกำหนดประเภทของวิธีการที่เรียกตัวเองวิธีการนี้เรียกว่าวิธีการประเภท
โครงสร้างคำสั่งและวิธีการระบุชนิดก่อนวิธีการคำหลัก func กับคำคง ชั้นอาจจะใช้คลาสคำหลักเพื่อช่วยให้ subclasses แทนที่การดำเนินงานระดับผู้ปกครอง
เช่นเดียวกับชนิดและวิธีการใช้อินสแตนซ์จุด (.) ไวยากรณ์ที่จะเรียก
import Cocoa class Math { class func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } struct absno { static func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } let no = Math.abs(-35) let num = absno.abs(-5) print(no) print(num)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
35 5