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

以下代码作为swift类的成员在操场上有效,但在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)
        }
    }
}

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

最佳答案

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

var sineWave : [Double] = []

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

关于xcode - Swift 2.0 map "Instance member cannot be used on type",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32540878/

10-10 03:36