最近、AppleはiOSアプリケーションの開発におけるかなり重要な変更を一般に紹介し、新しいプログラミング言語Swiftを発表しました。 現在、この言語専用のロシア語の資料の数は限られています。 また、Swiftはオブジェクト指向言語であり、その中のクラスは基本の基礎です。 そこで、この記事を翻訳することにしました。
クラス作成
新しいクラスを作成するには、
class
キーワード、
class
の名前、および中括弧を使用します。これらの内部では、クラスのプロパティとメソッドが宣言されます。
class Point { var x = 0.0
初期化子
Appleの
公式ドキュメントから :
初期化は、将来の使用のためにクラス、構造、または列挙のインスタンスを準備するプロセスです。 各プロパティの初期化と、最初の使用前に必要な他の設定または初期化の実行が含まれます。
初期化プロセスは、新しいクラスインスタンスが宣言されたときに呼び出される特別なメソッドであるイニシャライザーを使用して実装されます。 Objective-Cとは異なり、Swiftの初期化子は何も返しません。 クラスの新しいインスタンスの正しい初期化を保証します。
例を見てみましょう
class Point { var x var y }
実行すると、3つのコンパイルエラーが発生します。
class Point {
これを修正するには、各プロパティのタイプを設定しましょう
class Point { var x: Double var y: Double }
初期化子は、
init
キーワードで指定され
init
。 イニシャライザには複数のパラメータがある場合がありますが、まったくない場合もあります
class Point { var x: Float var y: Float init(x: Float, y: Float) { self.x = x self.y = y } }
オプションのプロパティ値を設定することもできます。 これを行うには、それを置くだけ
?
例に示すように、タイプの後。 この方法でプロパティを宣言すると、デフォルト値は
nil
ます。
class Point { var x: Float? var y: Float? } var point = Point()
初期化子のオーバーロード
プロジェクトの作成中に、ユーザーのリストを使用する必要が生じたと想像してください。 最初に
User
クラスを作成しましょう。 各クラスオブジェクトには、名(
firstName
)、姓(
lastName
)、簡単なユーザー情報(
bio
)のフィールドがあります。 姓と名のフィールドにはオプションの値があり、簡潔な情報フィールドにはデフォルト値があります(つまり、このフィールドはオプションです)。
class User { var firstName: String? var lastName: String? var bio: String = "I ♡ Swift!" } var user = User()
さて、クラスを作成しました。 次に、最初のユーザーを作成します。 簡単な情報フィールドはオプションなので、初期化子をオーバーロードする必要があります。 プレイヤーについて何かを書いたり、プレイヤーに暗い性格を残すことができます。 それでは、両方のケースのイニシャライザを書きましょう。
class User { var firstName: String var lastName: String var bio: String = "I ♡ Swift!"
ただし、初期化の違いは最小限であるため、これは完全に合理的ではありません。誰かに関する情報はありますが、誰かに関する情報はありません。 したがって、1つの初期化子を記述し、引数
bio
デフォルト値を与えましょう。
class User { var firstName: String var lastName: String var bio: String init(firstName: String, lastName: String, bio: String = "I ♡ Swift!") { self.firstName = firstName self.lastName = lastName self.bio = bio } } var me = User(firstName: "Andrei", lastName: "Puni")
クラスアイデンティティ
Appleの
公式ドキュメントから :
アイデンティティ演算子
クラスは参照型であるため、クラスの同じインスタンスが複数の変数または定数によって示される場合、状況が発生する可能性があります。 (これは構造体と列挙型では不可能です。どちらも重要なタイプであり、割り当てられてパラメーターとして関数に渡されるとコピーされるためです)
2つの変数または定数がクラスの同じインスタンスを参照していることがわかると便利な場合があります。 Swiftにはこのための2つの演算子があります。
同一( ===
)
同一ではない( !==
)
プレイヤーのリストがあり、そのうちの1人が城の所有者であるとします。 城の所有者ではないプレイヤーのためにいくつかの機能を追加する必要があります。 これを行うには、ID演算子(
===
)を使用しましょう
var users: User[] = [ ... ]
クラスオブジェクトを比較する場合、等号演算子(
==
)は機能しないため、このようなエラーを恐れる必要はありません。
次のパートでは、クラスの継承とプロトコルについて見ていきます。