2015-09-12 16 views
9

swift 2.0を使用してFFTを作成する方法を学びたいですが、.map関数をコンパイルするのに問題があります。Swift 2.0 Map "インスタンスメンバーはタイプに使用できません"

次のコードは、遊び場では動作しますが、xCodeの内部ではスワイプクラスのメンバーとして動作しません。

が、私は「インスタンスメンバー次のエラーを取得する 『sineArraySize』 『FFTAnalyser』

import Foundation 
import Accelerate 

class FFTAnalyser { 
    let sineArraySize = 64 // Should be power of two for the FFT 

    let frequency1 = 4.0 
    let phase1 = 0.0 
    let amplitude1 = 2.0 

    var sineWave = (0..<sineArraySize).map { 
     amplitude1 * sin(2.0 * M_PI/Double(sineArraySize) * Double($0) * frequency1 + phase1) 
    } 

    func plotArray<T>(arrayToPlot:Array<T>) { 
     for x in arrayToPlot { 
      print(x) 
     } 
    } 
} 

すべてのヘルプははるかに高く評価されるだろう。 おかげタイプに使用することはできません

答えて

4

エラーがにあるためsineWaveしようとしています。この問題を回避するには(初期設定はプロパティの値を定義した後に発生した)初期化されたsineArraySizeなどselfselfプロパティにアクセスするには、この操作を行うことができます。

var sineWave : [Double] = [] 

init() { 
    sineWave = (0..<sineArraySize).map { 
     amplitude1 * sin(2.0 * M_PI/Double(sineArraySize) * Double($0) * frequency1 + phase1) 
    } 
} 
+2

ありがとうございました! 私は、変数を自動的に初期化するSwiftの能力を評価しました。 すべての変数をメソッドに移動するか、または初期化子を使用して問題を解決してください。 – Sole

関連する問題