LoginSignup
0
1

More than 3 years have passed since last update.

失敗のあるイニシャライザ

Last updated at Posted at 2021-04-30

失敗のあるイニシャライザとは ????

失敗のあるイニシャライザとは、引数が誤っていたり、データの形式が間違っていたりした場合、
インスタンスの代わりにnilを返すことによって以上を知らせる機能のことです。
通常のinitに?をつけて記述します。

例えば、構造体Humanで、nameプロパティに長さが5以上の引数が入力された場合、イニシャライザを失敗させてみましょう。

失敗のあるイニシャライザの定義

init.playground
struct Human {

    var name: String!

    init?(_ name: String) {
        guard name.count < 5 else { 
            print("イニシャライズ 失敗")
            return nil 
        }
        self.name = name
        print("イニシャライズ 成功")
    }   
}

initのあとに?がついているのがわかります。
そのあと、「nameの長さが5以上」のときに、return nilしていることがわかり、これこそがイニシャライザの失敗が実装されている部分です。
逆に、「nameの長さが5未満」のときは、self.name = nameで、適切にプロパティに初期値が格納されます。

インスタンス化

では実際にインスタンス化してみましょう

let human1 = Human("hogehoge")
print(human)
// >>イニシャライズ 失敗
// >>nil

この例だと引数nameに5文字以上の値が入力されるため、guard文に引っかかり失敗します。

let human1 = Human("ken")
print(human)
// >>イニシャライズ 成功
// >>Optional(__lldb_expr_21.Humans(name: Optional("ken")))

この例だと引数nameに5文字未満の値が入力されるため、適切に初期化されます。これが失敗のあるイニシャライザの機能でした!






余談:詳細swiftって本読みやすくて面白いですよ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1