Я работаю над книгой о Swift, и я понимаю идею сферы в функциях, поэтому то, что я хотел бы понять далее, - это то, почему мы устанавливаем глобальные переменные, используя необязательные типы в классах. Честно говоря, похоже, что мы не устанавливаем эти переменные для одного слова, а просто даем классу знать, что в кодовой базе будет какая-то переменная определенного типа: var sut: ItemManager!
.Понимание необязательных глобальных переменных в swift
Из того, что я понимаю, переменная sut является развернутой опцией типа ItemManger, которая определенно имеет допустимое значение, а не ноль. Причина, по которой мы установили его с восклицательным знаком или вопросительным знаком, состоит в том, что в этом классе нет инициализатора. Что непонятно, так как этот класс не имеет инициализатора, какие факторы вступают в игру, когда вы определяете погоду, чтобы установить эту глобальную переменную на необязательную, используя знак вопроса или неявно развернутую с восклицательным знаком?
import XCTest
@testable import ToDo
class ItemManagerTests: XCTestCase {
var sut: ItemManager!
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
sut = ItemManager.init()
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func test_ToDoCount_InitiallySetAtZero(){
let sut = ItemManager.init()
XCTAssertEqual(sut.toDoCount, 0)
}
func test_DoneCount_InitiallySetAtZero(){
let sut = ItemManager.init()
XCTAssertEqual(sut.doneCount, 0)
}
}
Ни одна из претензий в первом элементе в вашем списке не верна. Для IUO отлично не иметь ценности - просто убедитесь, что вы не обращаетесь к ним без него. – Andreas