Swift 5.8 日本語化計画 : Swift 5.8


属性


宣言と型に情報を追加します。


Swift には、宣言に適用される属性と型に適用される属性の 2 種類の属性があります。属性は、宣言または型に関する追加情報を提供します。たとえば、関数宣言の discardableResult 属性は、関数が値を返すにもかかわらず、戻り値が使用されていない場合にコンパイラが警告を生成するべきではないことを示します。


属性の名前と、属性が受け入れるすべての引数が続く @ 記号を書くことで属性を指定します。


@<#attribute name#>

@<#attribute name#> ( <#attribute arguments#> )



いくつかの宣言属性は、属性と、それが特定の宣言にいかに適用するかに関する詳細な情報を指定する引数を受け入れます。これらの 属性の引数 は括弧で囲まれており、その形式は、所属する属性によって定義されます。



宣言の属性


宣言にだけ宣言の属性を適用できます。


available

アスタリスク(*) を使用して、上にリストしたすべてのプラットフォーム名上の宣言が使用可能であることを示すこともできます。Swift のバージョン番号を使用して利用可能性を指定する available 属性は、アスタリスクを使用できません。


残りの引数は、任意の順序で表示でき、重要なマイルストーンを含む宣言の寿命に関する追加情報を指定できます。


異なるプラットフォーム上および Swift の異なるバージョンで宣言の利用可能性を指定するために、一つの宣言上で複数の available 属性を適用できます。available 属性が適用される宣言は、属性が現在のターゲットと一致しないプラットフォームまたは言語のバージョンを指定する場合は無視されます。available 属性を複数使用する場合、有効な利用可能性はプラットフォームと Swift の利用可能性の組み合わせです。


available 属性が、プラットフォーム名または言語名の引数に加えて introduced 引数だけを指定している場合は、以下の省略構文を代わりに使用できます。


@available(<#platform name#> <#version number#>, *)

@available(swift <#version number#>)



available 属性の省略構文により、複数のプラットフォームの利用可能性を簡潔に表現できます。2つの形式は機能的に同等ですが、可能であれば省略形式が常に好まれます。


  1. @available(iOS 10.0, macOS 10.12, *)
  2. class MyClass {
  3. // class definition
  4. }


Swift のバージョン番号を使用して利用可能性を指定する available 属性では、宣言のプラットフォームの利用可能性を追加で指定することはできません。代わりに、Swift バージョンの利用可能性と 1 つ以上のプラットフォームの利用可能性を指定するために、別の available 属性を使用してください。


  1. @available(swift 3.0.2)
  2. @available(macOS 10.12, *)
  3. struct MyStruct {
  4. // struct definition
  5. }


discardableResult

dynamicCallable

  1. @dynamicCallable
  2. struct TelephoneExchange {
  3. func dynamicallyCall(withArguments phoneNumber: [Int]) {
  4. if phoneNumber == [4, 1, 1] {
  5. print("Get Swift help on forums.swift.org")
  6. } else {
  7. print("Unrecognized number")
  8. }
  9. }
  10. }
  11. let dial = TelephoneExchange()
  12. // Use a dynamic method call.
  13. dial(4, 1, 1)
  14. // Prints "Get Swift help on forums.swift.org".
  15. dial(8, 6, 7, 5, 3, 0, 9)
  16. // Prints "Unrecognized number".
  17. // Call the underlying method directly
  18. dial.dynamicallyCall(withArguments: [4, 1, 1])


requires_stored_property_inits


testable


この属性を import 宣言に適用して、モジュールのコードのテストを簡素化するそのアクセス制御への変更をそのモジュールにインポートします。internal アクセスレベル修飾子でマークされているインポートされたモジュール内の実体は、public アクセスレベル修飾子で宣言されているかのようにインポートされます。internal または public アクセスレベル修飾子でマークされたクラスとクラスメンバは、open アクセスレベル修飾子で宣言されているかのようにインポートされます。インポートされたモジュールは、テストを有効にしてコンパイルされなければなりません。


UIApplicationMain


usableFromInline


warn_unqualified_access



インターフェイスビルダーで使われる宣言属性


インターフェイスビルダーの属性は、Xcode と同期するようにインターフェイスビルダーで使用される宣言属性です。Swift は、以下のインターフェースビルダーの属性を提供しています。IBAction, IBSegueAction, IBOutlet, IBDesignable, および IBInspectable です。これらの属性は、Objective-C で対応する物と概念的に同じです。


IBOutlet と、IBInspectable 属性は、クラスのプロパティ宣言に適用されます。クラスのメソッド宣言には IBActionIBSegueAction 属性を適用し、クラス宣言には IBDesignable 属性を適用して下さい。


IBAction, IBSegueAction, IBOutlet, IBDesignable, または IBInspectable 属性を適用しても、objc 属性を含みます。


型の属性


型の属性は、型にだけ適用できます。


autoclosure



convention


escaping


この属性を関数またはメソッド宣言のパラメータの型に適用して、後で実行するためにパラメータの値を保存できることを示します。これは、値が呼び出しの寿命を超えて存続できることを意味します。escaping 型属性を持つ関数型パラメータでは、プロパティまたはメソッドの場合、self. を明示的に使用する必要があります。escaping 属性の使用例については、クロージャのエスケープ を参照してください。


Sendable


この属性を関数の型に適用して、関数またはクロージャが Sendable (送信可能) であることを示します。この属性を関数型に適用することは、非関数タイプを Sendable プロトコルに準拠することと同じ意味を持ちます。


この属性は、関数またはクロージャが送信可能な値を予期する文脈で使用され、関数またはクロージャが送信可能であるための要件を満たしている場合に、関数およびクロージャで推論されます。


送信可能な関数型は、対応する送信不可能な関数型のサブタイプです。



Switch Case 属性


switch case 属性は switch の case にのみ適用できます。


unknown


この属性を switch case に適用して、コードがコンパイルされた時点で既知の列挙型のいずれの case とも一致しないと予想されることを示します。unknown 属性の使用方法の例については、将来の列挙型 case の切り替え を参照してください。


属性の文法

attribute@­ attribute-name ­attribute-argument-clause­?
­ attribute-nameidentifier­
attribute-argument-clause( balanced-tokens­? ­)
attributesattribute attributes­?

balanced-tokens­balanced-token balanced-tokens­?
balanced-token( balanced-tokens­? ­)
balanced-token[ balanced-tokens­? ­]
balanced-token balanced-tokens­? ­}
balanced-token → Any identifier, keyword, literal, or operator
balanced-token → Any punctuation except (­, ) , [­, , {­, or }


前:宣言 次:パターン
















トップへ












トップへ












トップへ












トップへ
目次
Xcode の新機能

Swift について
Swift と Cocoa と Objective-C (obsolete)
Swift Blog より (obsolete)

SwiftLogo
  • Swift 5.8 全メニュー


  • Swift へようこそ
  • Swift について

  • Swift 言語のガイド

  • 言語リファレンス
  • 言語リファレンスについて
  • 語彙の構造



  • 宣言
  • 属性
  • パターン
  • 汎用パラメータと引数
  • 文法のまとめ

  • マニュアルの変更履歴













  • トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ