【发布时间】:2018-03-04 23:57:05
【问题描述】:
我想在一个扩展中使用一堆类似的函数/变异函数,并将它们存储(分类)在一个名称下。所以假设我有这个:
extension Int {
mutating func addTen() {
self = self + 10
}
mutating func subtractTen() {
self = self - 10
}
mutating func multiplyTen() {
self = 10 * self
}
mutating func divideTen() {
self = self / 10
}
}
所以现在如果我想将一个数字的值增加 10,我可以这样做:
var number : Int = 27
number.addTen() // Now number is equal to 37
但我想做的是将所有这些扩展名存储在以下名称下:myOperations。
所以理想情况下,我想像这样访问我的扩展:
var number1 = 20
var number2 = 20
var number3 = 20
var number4 = 20
number1.myOperations.addTen() //change to 30
number2.myOperations.subtractTen() //change to 10
number3.myOperations.multiplyTen() //change to 200
number4.myOperations.divideTen() //change to 2
我尝试这样做:
extension Int {
struct myOperations {
mutating func addTen() {
self = self + 10
}
mutating func subtractTen() {
self = self - 10
}
mutating func multiplyTen() {
self = 10 * self
}
mutating func divideTen() {
self = self / 10
}
}
}
但我得到了错误:Binary operator '+' cannot be applied to operands of type 'Int.myOperations' and 'Int'
如何将所有扩展名放在一个名为:myOperations 的分组下?
【问题讨论】:
-
您正在寻找的是命名空间。查看相关问题:How to use namespaces in Swift。但是,AFAIK Swift 不支持在不创建新类型(例如 C++)的情况下定义命名空间(这似乎是“分组”的意思),因此您正在寻找的东西是不可能的。
标签: swift function struct swift-extensions