Latest web development tutorials

สคริปต์ห้อยสวิฟท์

สคริปต์ห้อยสามารถกำหนดในระดับ (Class) โครงสร้าง (โครงสร้าง) และการแจงนับ (การแจงนับ) วัตถุประสงค์เหล่านี้ถือได้ว่าการเข้าถึงวัตถุคอลเลกชันของทางลัดหรือลำดับไม่จำเป็นต้องเรียกการมอบหมายงานอินสแตนซ์ที่เฉพาะเจาะจงและการเข้าถึง วิธีการ

ยกตัวอย่างเช่นสคริปต์ที่มีการเข้าถึงดัชนีอาร์เรย์ (อาร์เรย์) องค์ประกอบเช่นสามารถเขียน someArray [ดัชนี] เข้าถึงองค์ประกอบพจนานุกรม (Dictionary) เช่นสามารถเขียน someDictionary [สำคัญ]

สำหรับวัตถุประสงค์เดียวกันสามารถกำหนดสคริปต์ห้อยหลายชนิดที่แตกต่างของค่าดัชนีที่ต้องการมากเกินไปและจำนวนของค่าดัชนีอาจจะเป็นพหูพจน์


สคริปต์ห้อยไวยากรณ์และการประยุกต์ใช้

ไวยากรณ์

สคริปต์ห้อยช่วยให้คุณมีค่าดัชนีโดยผ่านหนึ่งหรือมากกว่าของกรณีดังต่อไปนี้ในวงเล็บในการเข้าถึงและได้รับมอบหมายเช่น

ไวยากรณ์จะคล้ายกับวิธีการผสมและทรัพย์สินเช่นการคำนวณ

และความหมายของวิธีการเช่นมีความคล้ายคลึงกับคำนิยามของสคริปต์ห้อยห้อยคำหลักประกาศแน่ชัดว่าวุฒิสภา (อย่างใดอย่างหนึ่งหรือมากกว่า) และกลับประเภท

และตัวอย่างของวิธีการที่แตกต่างกันเป็นสคริปต์ห้อยสามารถตั้งค่าให้อ่านเขียนหรืออ่านอย่างเดียว วิธีนี้เป็นบิตเช่นทะเยอทะยานและคุณสมบัติการคำนวณ Setter:

subscript(index: Int) -> Int {
    get {
        // 用于下标脚本值的声明
    }
    set(newValue) {
        // 执行赋值操作
    }
}

ตัวอย่างที่ 1

import Cocoa

struct subexample {
    let decrementer: Int
    subscript(index: Int) -> Int {
        return decrementer / index
    }
}
let division = subexample(decrementer: 100)

print("100 除以 9 等于 \(division[9])")
print("100 除以 2 等于 \(division[2])")
print("100 除以 3 等于 \(division[3])")
print("100 除以 5 等于 \(division[5])")
print("100 除以 7 等于 \(division[7])")

เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:

100 除以 9 等于 11
100 除以 2 等于 50
100 除以 3 等于 33
100 除以 5 等于 20
100 除以 7 等于 14

ในตัวอย่างข้างต้นโดยโครงสร้าง subexample สร้างอินสแตนซ์ของการดำเนินงานส่วนหนึ่ง ค่า 100 เป็นอาร์กิวเมนต์โครงสร้างคอนสตรัคที่ผ่านมาเริ่มต้นสมาชิกเช่น decrementer

คุณจะได้รับผลที่ตามมาโดยสคริปต์ห้อยเช่นส่วน [2] 100 หารด้วยสอง

ตัวอย่างที่ 2

import Cocoa

class daysofaweek {
    private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday", "saturday"]
    subscript(index: Int) -> String {
        get {
            return days[index]   // 声明下标脚本的值
        }
        set(newValue) {
            self.days[index] = newValue   // 执行赋值操作
        }
    }
}
var p = daysofaweek()

print(p[0])
print(p[1])
print(p[2])
print(p[3])

เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:

Sunday
Monday
Tuesday
Wednesday

การใช้

ตามที่สถานการณ์การใช้งานสคริปต์ห้อยที่แตกต่างกันนอกจากนี้ยังมีความหมายที่แตกต่างกัน

โดยปกติสคริปต์ห้อยใช้ในการเข้าถึงคอลเลกชัน (คอลเลกชัน) รายการทางลัด (รายชื่อ) หรือลำดับ (ลำดับ) ขององค์ประกอบ

คุณมีอิสระที่จะใช้สคริปต์ดัชนีในชั้นเรียนโดยเฉพาะอย่างยิ่งของคุณเองหรือ struct เพื่อให้ฟังก์ชันการทำงานที่เหมาะสม

ยกตัวอย่างเช่นสวิฟท์พจนานุกรม (พจนานุกรม) เพื่อให้เกิดการดำเนินงานการเข้าถึงโดยค่าเช่นสคริปต์ห้อยเก็บไว้ในนั้น ค่ามาตรฐานต่อไปใช้ในสคริปต์และพจนานุกรมดัชนีประเภทเดียวกันและค่าของประเภทค่าพจนานุกรมที่มีการมอบหมายให้ค่าดัชนีตั้งเท้าในพจนานุกรม:

import Cocoa

var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2

print(numberOfLegs)

เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:

["ant": 6, "bird": 2, "cat": 4, "spider": 8]

ตัวอย่างที่กำหนดตัวแปรชื่อ numberOfLegs และใช้พจนานุกรมที่แท้จริงในการเริ่มต้นเป็นตัวอย่างของพจนานุกรมมีสามคู่ของคีย์ numberOfLegs พจนานุกรมเก็บไว้ประเภทค่าพจนานุกรมอนุมาน . หลังจากที่ตัวอย่างเช่นพจนานุกรมถูกสร้างขึ้นโดยวิธีการที่ค่าจำนวนเต็มสคริปต์ห้อย 2 มอบหมายให้ดัชนีเช่นพจนานุกรมสำหรับสถานที่ตั้งของนก


ตัวเลือกสคริปต์ห้อย

สคริปต์ห้อยช่วยให้จำนวนพารามิเตอร์ใด ๆ ลงในดัชนีและแต่ละชนิดนอกจากนี้ยังมีข้อ จำกัด เกี่ยวกับวุฒิสภาไม่มี

ดัชนีค่าตอบแทนของสคริปต์ที่สามารถใช้วิธีใด

สคริปต์ห้อยสามารถใช้พารามิเตอร์ตัวแปรและตัวแปร

ชั้นเรียนหรือโครงสร้างสามารถเป็นไปตามความต้องการของตนเองเพื่อให้การเพิ่มเติมของสคริปต์มาตรฐานต่อไปนี้เมื่อกำหนดสคริปต์ห้อยโดยผ่านพารามิเตอร์ที่จะแยกแยะชนิดโดยอัตโนมัติจะตรงกับสคริปต์ห้อยสคริปต์ Runtime ห้อยที่เหมาะสมซึ่งเป็นสคริปต์ห้อยมากเกินไป

import Cocoa

struct Matrix {
    let rows: Int, columns: Int
    var print: [Double]
    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        print = Array(count: rows * columns, repeatedValue: 0.0)
    }
    subscript(row: Int, column: Int) -> Double {
        get {
            return print[(row * columns) + column]
        }
        set {
            print[(row * columns) + column] = newValue
        }
    }
}
// 创建了一个新的 3 行 3 列的Matrix实例
var mat = Matrix(rows: 3, columns: 3)

// 通过下标脚本设置值
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0

// 通过下标脚本获取值
print("\(mat[0,0])")
print("\(mat[0,1])")
print("\(mat[1,0])")
print("\(mat[1,1])")

เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:

1.0
2.0
3.0
5.0

โครงสร้างเมทริกซ์มีสองอาร์กิวเมนต์ constructor ผ่านสองพารามิเตอร์เป็นแถวและคอลัมน์สร้างอาร์เรย์ชนิด double พอที่จะรองรับจำนวนแถวนี้ * คอลัมน์ สำหรับการจัดเก็บขนาดขององค์ประกอบของอาร์เรย์แต่ละคนและอาร์เรย์ค่าเริ่มต้นของ 0.0

คุณสามารถสร้างอินสแตนซ์เมทริกซ์ใหม่โดยผ่านแถวที่เหมาะสมและคอลัมน์ของตัวเลข