Swift:为什么我需要在声明中打开非可选变量
我不明白为什么在测试中需要在声明中“强制展开”变量类型 让我举一个更清楚的例子:Swift:为什么我需要在声明中打开非可选变量,swift,syntax,optional,forced-unwrapping,Swift,Syntax,Optional,Forced Unwrapping,我不明白为什么在测试中需要在声明中“强制展开”变量类型 让我举一个更清楚的例子: class testSomething: XCTestCase { var mockService: MockService! override func setUp() { mockService = MockService() } ... 因此,我们的目标显然是在每次运行测试时创建一个新的模拟服务实例。我只是不明白为什么我需要将这个变量声明为MockService类型。在这个上下文
class testSomething: XCTestCase {
var mockService: MockService!
override func setUp() {
mockService = MockService()
}
...
因此,我们的目标显然是在每次运行测试时创建一个新的模拟服务实例。我只是不明白为什么我需要将这个变量声明为MockService代码>类型。在这个上下文中,type后面的感叹号到底是什么意思
需要明确的是,当我声明mockService:mockService
Xcode时,我的测试类没有初始化器必须在声明行中初始化非可选变量
var mockService = MockService()
或者在init()方法中
var mockService : MockService
init() {
mockService = MockService()
}
如果不可能,则将变量声明为强制展开,并确保无论何时使用该变量,该变量都不是nil
。然后,它的行为类似于非可选的。在这种情况下:mockService
未在适当的位置或构造函数中初始化,请尝试注释掉代码>。看看这个(第二个答案):这里是对隐式WrappedOptional
s的用例的一个很好的概述。var mockService:mockService
声明类型为隐式WrappedOptional
的变量。它不会“在声明中强制展开变量类型”我想这是一个复制品。是的,我不知道术语“代码>隐式损坏可选的< /代码> @ d.aNielngy,请您把您的评论作为回复,我会把它标记为最好的答复。