标签: mutating-function

Swift:在类型中找不到枚举案例

我一直在这里寻找很多问题,我发现一个类似标题的枚举案例开关没有在类型中找到,但对我来说没有解决方案.

我想使用带有自身变异的枚举来解决问题,在个别状态下,下一个交通灯颜色是什么.

enum TrafficLights {
    mutating func next() {
        switch self {
        case .red:
            self = .green
        case .orange:
            self = .red
        case .green:
            self = .orange
        case .none:
            self = .orange
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已将所有案例作为可能的选项,它仍然返回错误:

在'TrafficLights'类型中找不到枚举"案例"

enums switch-statement swift mutating-function

7
推荐指数
2
解决办法
5532
查看次数

Python中的变异/就地函数调用或改编

我的代码中经常有语句执行以下操作:

long_descriptive_variable_name = some_function(long_descriptive_variable_name)
Run Code Online (Sandbox Code Playgroud)

这是非常清楚的,但同时又冗长且多余.有没有办法在Python中简化这个语句,或许可以将 some_functionact作为"变异"("就地")函数?

例如,在Julia 中,通常可以执行以下操作:

some_function!(long_descriptive_variable_name)
Run Code Online (Sandbox Code Playgroud)

并将其分派到some_function直接写入的版本long_descriptive_variable_name,有效地更新变量.

有没有办法在Python中为通用函数简洁地表达相同的内容some_function

用一般对象方法做同样的事情呢?即简化

long_variable_name = long_variable_name.method(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

如果以上(当前版本的Python)不能(轻松)做到这一点,那么在不久的将来是否有任何PEP考虑这种变化?

python in-place python-3.x mutating-function

6
推荐指数
1
解决办法
62
查看次数

Swift中的“变异”函数和“输入”参数之间有什么区别吗?

根据Swift文档,mutation和inout关键字均用于从函数内部修改值类型。“变异”和“输入”之间是否有任何区别,以及在任何需要使用它们之一的特殊情况下,有什么区别。

struct ios swift mutating-function inout

4
推荐指数
1
解决办法
381
查看次数

Swift NSDate扩展错误:Mutating对类或类绑定协议中的方法无效

我正在尝试扩展,NSDate但我得到两个错误:

extension NSDate { //'mutating' isn't valid on methods in classes or class-bound protocols
    mutating func addMonth() {
        let calendar = NSCalendar.currentCalendar()
        let component = NSDateComponents()
        component.month = 1
        self = calendar.dateByAddingComponents(component, toDate: self, options: []) //Cannot assign to value: 'self' is immutable
    }
} 
Run Code Online (Sandbox Code Playgroud)

我的猜测是,这NSDate是一个类而不是Swift类型,因为mutating类中的方法不能使用错误状态.如果我返回值并分配它一切正常但我想知道这不起作用的确切原因以及是否有更好的解决方法.

nsdate swift mutating-function

2
推荐指数
1
解决办法
2131
查看次数

Swift结构突变变量不起作用?

即使mutating func在方法中使用关键字,我也无法修改模型类变量?

所以基本上我都包裹着我的问题,在一个非常简单的方法,我有一个类Car,拥有3个变量idstartmodelNo

之后,初始化一个空的Car模型数组,然后显示10个汽车,为迭代创建一个范围范围1...10,初始化Car模型类,并将其附加到原始的cars数组中。

前5个汽车ID为0,最后5个汽车ID为1的支票

我想要一个将在其中启动相同ID的最后一辆车的过滤器,因此我创建了一个过滤并修改start变量但无法修改的方法。您能帮我做错什么吗?

请查看我的完整代码,然后将其复制粘贴到操场上。

struct Car {
    var id = 0
    var start = false
    var modelNo: String

    init(start: Bool, id: Int, model: String) {
        self.start = start
        self.id = id
        self.modelNo = model
    }

    mutating func startCar(status: Bool) {
        start = status
    }
}

var arrCars:[Car] = [Car]()

for i in 1...10 {
    let md = Car(start: false, id: i <= 5 ? 0 : …
Run Code Online (Sandbox Code Playgroud)

struct ios swift mutating-function swift4

1
推荐指数
1
解决办法
1414
查看次数