LoginSignup
6
5

More than 5 years have passed since last update.

var a = a や if let b = b {} のような紛らわしい構文も使えるswiftのシャドウイング

Last updated at Posted at 2016-08-13

-- この記事はXcode8 beta5での動作を元に書いていますが、正式リリースまでに動作が変わる可能性があります。--

実はシャドウイングというのは初めて聞きました。
どうやら変数名を使い回すことをシャドウイングと言うようです。

swift-evolutionのこの提案でシャドウイングについて触れています。
ここではSwift3で関数のパラメータにvar宣言が使えなくなるため、機械的に置き換える方法として下記のコードを紹介しています。

func foo(i: Int) {
  var i = i
}

この書き方、他でも使えるかと思って試してみたらエラーになりました。

let i = 3
do {
  var i = i   // Error: Variable used within its own initial value
}

でも、Optional Bindingではシャドウイングを使うことができます。

let b: Int? = 3
if let b = b {
    print(b)   // 3
}
print(b)   // Optional(3)

他にもシャドウイングが使えるパターンがあるかもしれません。

シャドウイングは変数名を決めるのが煩わしい時は便利です。
しかし、コードを誤認する可能性もあります。
複数人で作業する時はコーディング規約などでルールを明確化する必要があるでしょう。

参考文献:
SE-0003 Removing var from Function Parameters

6
5
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
6
5