Swift Review#27[下標腳本Subscripts與getter、setter的操作]

--

前言

下標這個概念,可能在乍看之下,根本不知道它具體想要表達的是什麼,若要談論其功能,那勢必不能脫離兩件事:存取值設置值。

何以見得呢?

下標的語法在過去兩個篇章:陣列、字典中其實就是以下標的概念去組建的:

在陣列或字典名稱後面緊接著中括號[],括號內填入陣列的索引值(index)或是字典的鍵(key),即可存取或設置值。(資料來源:Swift起步走

而承繼在計算屬性的篇章中談論過getter、setter兩個功用,即為存取值設置其他屬性的值。

因此,本篇章會著重於描述兩件事情:

  1. getter、setter的概念梳理
  2. 下標的用法

正文

1.get、set的運作

get在實務上的運作,基本上是這樣:

當你執行了上述這張圖的程式的時候,打印sum本身的時候,你會直接得到的是它在get中,被讀取的return的內容,所以也就是說,sum這個時候的本質讀取了你設定好的運算,並返還給你而已。

而這個就被稱為是唯讀計算屬性。唯讀計算屬性總是回傳一個值,可以通過點運算子存取,但不能設置新的值。(資料來源:《The Swift of Programming Language》中文版

至於set在實際上的運作:

則是你要先賦予sum一個值,比如我賦予它5這個數值,然後這個時候我再操作受set影響的變數num2,這個時候,他就會重新將你賦予sum的值進入set裡運算,實際上出來的值就是你所設定受影響的對象,在上述的程式中,就是num2。

而跟唯讀性相反的就是set的功能,它生而賦值,所以在概念上,它是一個對值進行更改的角色。

下標腳本(subscripts)

下標腳本 可以定義在類別(Class)、結構(structure)和列舉(enumeration)這些目標中,可以認為是存取物件、集合或序列的快捷方式,不需要再呼叫實例的特定的賦值和存取方法。

舉例來說,用下標腳本存取一個陣列(Array)實例中的元素可以這樣寫 someArray[index] ,存取字典(Dictionary)實例中的元素可以這樣寫 someDictionary[key]

在下標腳本的語法中,大致會呈現下面的樣態

實際上操作會是這個樣子:

在上面這個程式裡,基本上實質操作的就是get,經過賦值之後,會直接的回傳return index +1的內容回來。

而通常我們也可以不放get這個字眼,它是可以省略的:

程式中,我們就把get字樣省略了,這樣基本上還是可以保證我們在操作的時候會回傳值。

不過基本上在運作下標腳本的時候,就跟我們在運作Array[0]是一樣的概念,然後它會回傳第一項,而下標腳本在做的事情也跟它一樣,比如上述的例子,我在這裡是將結構SomeCalculate實體化為some後,以some[6]輸入值,而得出7這個數字。

這個概念跟陣列非常相似對吧!

假如今天我要在下標腳本操作set呢,原則上原理就跟上面的set是一樣的!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

No responses yet

Write a response