cómo sobrecargar un operador de asignación en swift

Me gustaría sobrescribir el operador ‘=’ para un CGFloat como el siguiente bash:

func = (inout left: CGFloat, right: Float) { left=CGFloat(right) } 

Entonces podría hacer lo siguiente:

 var A:CGFloat=1 var B:Float=2 A=B 

Se puede hacer esto ? Obtengo el error Explicitly discard the result of the closure by assigning to '_'

Eso no es posible, como se describe en la documentación :

No es posible sobrecargar el operador de asignación predeterminado (=). Solo los operadores de asignación compuesta pueden estar sobrecargados. Del mismo modo, el operador condicional ternario (a? B: c) no se puede sobrecargar.

Si eso no te convence, simplemente cambia el operador a += :

 func += (inout left: CGFloat, right: Float) { left = CGFloat(right) } 

y notará que ya no obtendrá un error de comstackción.

El motivo del mensaje de error engañoso es probablemente porque el comstackdor interpreta su bash de sobrecarga como una tarea

No puede anular la asignación, pero puede usar diferentes operadores en su caso. Por ejemplo &= operador.

 func &= (inout left: CGFloat, right: Float) { left = CGFloat(right) } 

Entonces podrías hacer lo siguiente:

 var A: CGFLoat = 1 var B: Float = 2 A &= B 

Por cierto, los operadores &+ , &- , &* existen en forma rápida. Representan una operación estilo C sin desbordamiento. Más