jarinosuke blog

about software engineering, mostly about iOS

デフォルト引数を使って簡易メソッドを簡単に作る

複数引数を扱うメソッドの簡易メソッドObjective-Cで用意するには

初めに Objective-C での事例を説明してから、Swift の話しに移った方が分かりやすいと思います。

Objective-C では以下の様にして、簡易メソッドの数だけメソッドを生やす必要がありました。

- (void)function
{
    [self function:nil param2:nil];
}

- (void)function:(id)param1
{
    [self function:param1 param2:nil];
}


- (void)function:(id)param1 param2:(id)param2
{
    //肝心の処理
}

書くのも少し大変ですが、何よりコードを読む時に場合が大変です。

場合によっては、何度もジャンプをして肝心の処理が記述されているメソッド

ようやくたどり着くなんてこともあります。

Swift におけるオプション引数

Swift では引数にデフォルト値を指定する事が出来ます。

デフォルト値を設定すると、その引数無しでその関数を実行してもエラーが起きないので

それだけで簡易メソッドとして扱う事が出来る様になりました。

以下を Playground などで実行してみると分かると思います。

func function(param1 : AnyObject? = nil, param2 : AnyObject?  = nil) {
    if param1 != nil {
        println("param1")
    }
    
    if param2 != nil {
        println("param2")
    }
}

function()
function(param1: 1)
function(param1: 1, param2: 2)