Swiftの@から始まる記述が気になってしょうがない人 〜Attribute〜

Swiftでプログラムをする上で、@から始まる記述が一体何をしているのか気になってしょうがないので調べてメモしました。まずはAttributeのことから。

何者か?

Swiftの世界でfuncやstruct宣言の前行に@から始まる記述を見たら、それはAttribute(=属性)と呼ばれるものです。

何する物?

関数などの各種宣言やタイプに適用される追加情報のことです。

書き方は?

Attribute自体はいくつか決まったものが用意されていて、適用したい宣言やタイプの前にAttributeを書くと、適用した先にAttributeの情報が追加されます。

例えば?

例えば、discardableResultというAttibuteを関数の前に定義したのが下のコードです。この関数はInt型の値を返すものとします。

@discardableResult
func addTwoValue(x:Int, y:Int) -> Int{
   // 何やかんや関数
   return x+y
}

addTwoValue(5,3)

このように戻り値を返す関数にも関わらず、呼び出し側が戻り値を受け取らない場合であっても、@discardableResultがあることでコンパイラが警告を出さなくします。

つまり、この使い方だと本来は警告が出るんだけど無視してね。お願い🙏。という追加情報をコンパイラに与えているわけです。

例えばその2

プロジェクトで最初に実行される場所には@mainという記述があります。大抵はプロジェクト名.swiftファイルにあるはず。そのプログラムの最初に実行される場所ですよという追加情報を与えている。

@main
struct OreNoSampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

他にどんなAttributeがあるか?詳しくは…

こちらのオフィシャルリンクを。Attributeについては、気になるものがあれば調べるくらいのスタンスでちょうどいいのかな。調べ尽くさないとコードが書けないわけではないので。

この記事が気に入ったらサポートをしてみませんか?