2016-03-30 11 views
0

Swiftを使用してSwiftで行列を作成しています。私はx値のリストを使って行列を形成します。 x値のリストが整数のリストであったときは問題ではありませんでしたが、x値のリストに10進数を使用しようとすると、「[Double] '型の値を添字にできません。ラインに生じたSwiftで '[Double]'タイプの値をサブスクリプトできません

@IBAction func button(sender: UIButton) { 
    let x_values = [3.629, 2, 3] 
    let y_values:[Double] = [4, 8, 16] 

    // Counters for loops 
    var columns = 0 
    var x_parse = 0 

    // Create Swix matrix 
    var mat = eye(x_values.count) 

    // Assign values to matrix from x_values 
    while columns < x_values.count { 
     var rows = x_values.count - 1 
     var exponent = x_values.count 
     while rows > -1 { 
      let element = x_values[x_parse] ^^ exponent 

      mat[columns, rows] = element 
      rows = rows - 1 
      exponent = exponent - 1 
     } 
     columns = columns + 1 
     x_parse = x_parse + 1 
    } 
    let y_ndarray = asarray(y_values) 
    let solution = solve(mat, b: y_ndarray) 
    print(String(solution)) 
    print(solution) 
    print(label.text = String(solution)) 
} 

問題:ここに私のコードがある

問題として x_valuesを強調
let element = x_values[x_parse] ^^ exponent 

^^演算子を定義するコードは次のとおりです。

infix operator ^^ { } 
func ^^ (radix: Int, power: Int) -> Int { 
    return Int(pow(Double(radix), Double(power))) 
} 
それはダブルスが含まれている場合、私は私のリスト内の値にアクセスする必要がありますどのように

+1

Swixで '^^'演算子がどのように定義されているか(またはあなた自身で定義した演算子ですか?)を教えてください。これは古典的な難読化されたエラーのようです:エラーの実際の原因は 'x_values'を索引付けしようとするのではなく、lhs' x_values'( '[Double]' )とrhs '指数部(型' Int')である。 – dfri

+0

Swift標準ライブラリには '^^'演算子はありません。これはカスタム定義のものでなければなりません。 –

+0

上記の私のコメントにマイナーな "編集":_ "... lhs' x_values [x_parse] '(タイプ' Double')とrhs '指数'(タイプ 'Int')" _で '^^'を使用。 @MartinR:彼は[Swix](https://github.com/stsievert/swix)を簡単に言及しています。 – dfri

答えて

0

^^演算子の定義から問題が発生したようです。 ^^演算子を定義するコードを、私が見つけた別のスニペットに置き換えました。

infix operator ** { associativity left precedence 170 } 

func ** (num: Double, power: Double) -> Double{ 
    return pow(num, power) 
} 

と私は私のx_valuesダブルスのリストを作成したときにそれが働いている::new演算子の定義がある

let x_values:[Double] = [3.629, 3.561, 3.527] 

などのように私のコードを更新:

let element = x_values[x_parse] ** exponent 

すべてがそうです今正しく働いている。

関連する問題