

swift2.0で値の累乗を返すプログラムのエラーが出てしまいます。原因はなんでしょうか？  
ご教授お願いします。

//追記いたしました//

[code]

    import UIKit
    import Foundation
    
    class pcscoredistance{
    
        //数の累乗を求めるプログラム
        func ruizyou(lhs: Double, rhs: Double) -> Double {
    
            let ruizyou1 = pow(lhs, rhs)
            return ruizyou1
        }
        var n = ruizyou(-9.0, rhs: 2.0)//Extra argument 'rhs' in call というエラー
    }
    
[/code]


CC BY-SA 3.0
2015-11-12T05:15:34.827
18717
2015-11-12T09:24:40.907
2015-11-12T07:20:24.197
7362
12536
question
swift
swiftで値のべき乗を返すプログラムのエラー


呼び出し時、ラベルが必要な気がします

[code]

    var n = ruizyou(4.0, rhs:2.0)
    
[/code]


CC BY-SA 3.0
2015-11-12T05:19:11.273
18718
2015-11-12T05:19:11.273
845
18717
answer


Swift 2.0では

[code]

    var n = ruizyou(4.0, rhs:2.0)
    
[/code]

で、シンタックスエラーになりません。（Xcode.7.1.1のPlaygroundで確認）

Swift 1.2では

[code]

    var n = ruizyou(4.0, 2.0)
    
[/code]

と、第2引数のラベルを外すと、シンタックスエラーになりません。（Xcode 6.4のPlaygroundで確認）

* * *

_質問文が更新されたことによる、追記：_

関数（メソッド）の書式（Syntax）の問題でなく、インスタンス変数（プロパティ）の宣言のしかたの問題です。インスタンス変数の宣言時に、静的でない（`0.0`とか`1.0`など、決まった値にきまらない）値を初期値とすることはできません。

[code]

    var n = ruizyou(-9.0, rhs: 2.0)
    
[/code]

を

[code]

    var n = 0.0
    
[/code]

などとすると、エラーは出なくなるでしょう。  
メソッドを使った、動的な値を初期値とするには、クラスのイニシアライザで、それを行います。

[code]

    // Swift 2.0
    import UIKit
    // import Foundation // UIKitをインポートしたら、Foundationのインポートは不用。
    
    class PcScoreDistance{ // クラス名は大文字で始める。インスタンス名を小文字で始めることで、混乱を防げる。
        //数の累乗を求めるプログラム
        func ruizyou(lhs: Double, rhs: Double) -> Double {
            // let ruizyou1 = pow(lhs, rhs)
            // return ruizyou1
            return pow(lhs, rhs)
        }
        var n: Double = 0.0 // とりあえず、0.0で初期化。
    
        // イニシアライザ
        init() {
            n = self.ruizyou(-9.0, rhs: 2.0) // メソッドのレシーバselfが必要。
        }
    }
    
    let object = PcScoreDistance()
    object.n // 出力：81
    
[/code]

もうひとつ修正案を出しておきます。これはメソッド`ruizyou()`を、クラスの外に出して、独立した関数として定義します。

[code]

    // Swift 2.0
    import UIKit
    
    //数の累乗を求めるプログラム
    func Ruizyou(lhs: Double, rhs: Double) -> Double { // 独立した関数は、大文字で始めたほうが、Objective-Cからある過去の資産と、相性がいい。
        return pow(lhs, rhs)
    }
    
    class PcScoreDistance{
        var n: Double = Ruizyou(-9.0, rhs: 2.0)
    }
    
    let object = PcScoreDistance()
    object.n // 出力：81
    
[/code]


CC BY-SA 3.0
2015-11-12T05:48:56.230
18719
2015-11-12T09:24:40.907
2015-11-12T09:24:40.907
7362
7362
18717
answer


`func`の前に`class`修飾子をつけてみて

[code]

    class func ruizyou(lhs: Double, rhs: Double) -> Double {
       ...
    }
    
[/code]

だとどうでしょう？

（もしかしたら`var n`の方にも`class`が必要になってくるかもしれません。）


CC BY-SA 3.0
2015-11-12T08:07:55.847
18726
2015-11-12T08:07:55.847
7290
18717
answer