如何将 属性 声明为 Swift 中的函数?

How to declare a property as a function in Swift?

这是我的代码:

import Cocoa

class VC1: NSViewController {
    let aFunctionVar ()->Void
}

但是编译器告诉我:"Class VC1 has no initializers"

根据 Apple Swift iBook 中的 swift 示例,他们的示例是这样的:

var mathFunction: (Int, Int) -> Int = addTwoInts

但就我而言,我正在尝试创建一个 属性 变量。目前还不知道变量是什么,所以我不能在那里设置它。有帮助吗?

Edit - 我已经知道如何在简单 String/Array/Dictionary 类型等方面使变量成为可选的和惰性的。但这是一个函数类型 属性 多变的。它旨在保存类型 ()->Void 的函数。关于如何做到这一点的任何帮助?

在 objectiveC 中,这可以通过像这样制作一个块 属性 来完成:

@property (nonatomic, copy)  void (^aFunctionVar)();

如果设置对象后才知道值,可以使用惰性变量:

class LazyTester {
    lazy var someLazyString: String = {
       return "So sleepy"
    }()
}
var myLazyTester = LazyTester()
myLazyTester.someLazyString

编译器给你这个错误是因为你定义了一个强制存储变量,projectLaunchData,但没有给它一个值。如果你知道初始化时的变量值,你可以在初始化时设置它。

projectLaunchData 声明为可选 var:

import Cocoa

class VC1: NSViewController {
    var projectLaunchData: (()->Void)?
}

那你可以稍后赋值:

func test() {
    print("this works")
}

let myVC = VC1()

// assign the function
myVC.projectLaunchData = test

// Call the function using optional chaining.  This will safely do nothing
// if projectLaunchData is nil, and call the function if it has been assigned.
// If the function returns a value, it will then be optional because it was
// called with the optional chaining syntax.
myVC.projectLaunchData?()