Swift 2.0 Map"实例成员不能在类型上使用"

Sol*_*ole 9 xcode dictionary fft swift

我正在尝试学习如何使用swift 2.0创建FFT但是我无法编译.map函数.

以下代码在游乐场中工作,但不在xCode内部作为swift类的成员.

我收到以下错误"实例成员'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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.谢谢

Kam*_*xom 4

该错误是因为sineWave尝试在初始化之前访问self属性sineArraySize和其他属性self(初始化发生在定义属性值之后)。要解决此问题,您可以执行以下操作:

var sineWave : [Double] = []

init() {
    sineWave = (0..<sineArraySize).map {
        amplitude1 * sin(2.0 * M_PI / Double(sineArraySize) * Double($0) * frequency1 + phase1)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的帮助!我高估了 Swift 自动初始化变量的能力。只需将所有变量移动到一个方法中,或者使用初始化器就可以解决问题。 (2认同)