読者です 読者をやめる 読者になる 読者になる

食後のSwift ~琵琶湖からコンバンハ~

swiftやオキュラスについて書こうと思っていたブログ。

Swift error: argument labels '(_:)' do not match any available overloads が出た時の対処法

swift

error: argument labels '(_:)' do not match any available overloads が出た時に少し迷ったので、その対処法を書いておきます。

struct Cube {
    var area: Int
    
    init(height: Int ) {
        area = height * height
    }
    
    init(half height: Int){
        area = height * height / 2
    }
}

let cube = Cube(10)  // Argument labels '(_:)' do not match any available overloads

このエラーはイニシャライザが2つあり、どちらを呼び出したいのかわからないためエラーとなっています。

そのため、引数名もしくはラベル名を指定すればエラーは消えます。

struct Cube {
    var area: Int
    
    init(height: Int ) {
        area = height * height
    }
    
    init(half height: Int){
        area = height * height / 2
    }
}

let cube = Cube(height: 10)
let halfCube = Cube(half: 10)
print(cube.area)  // 100
print(halfCube.area)  // 50


同じエラーがあったのでこちらも参考にどうぞ
swift3 - swift 3 error : Argument labels '(_:)' do not match any available overloads - Stack Overflow