tutorial the programming language examples swift macos swift2 xcode7

examples - the swift programming language pdf



¿Son++ y+= 1 exactamente iguales? (4)

Como dije en mi comentario aquí es cómo debe escribirlo ahora para reemplazar el postfix ++. Otra forma sería usar una variable intermedia si no te gusta la cosa -1.

let incrementCounter1: () -> Int = { counter1+=1 //original is counter1++ return counter1-1; }

Acabo de cambiar a Swift por un par de días y me doy cuenta de que el postfijo y el prefijo ++ y - se eliminarán en Swift 3. He investigado un poco y, de acuerdo con el anuncio en el sitio web de Swift, el operador ++ y - será reemplazado por + = 1 y - = 1. Enlace aquí Nuevas características en Swift 2.2

Tengo un código que funciona bien con la versión anterior de Swift. Cuando cambio de return counter1++ que es mi código original para return counter1 += 1 aparece un error que dice:

No ''+ ='' los candidatos producen el tipo de contexto esperado ''Int''

Aquí está mi ejemplo

func countingCounter() -> (() -> Int){ var counter1 = 0 let incrementCounter1: () -> Int = { return counter1+=1 //original is counter1++ } return incrementCounter1 }

He tratado de resolver esto, pero todavía atascado.


No, no son idénticos, ++ e - incrementan (o disminuyen) y devuelven, + = y - = suman (o restan) una cantidad en una forma corta de fácil lectura, pero no devuelven nada.

Por lo tanto, debe separar el cambio de valor del uso de valor. ¿Cuál es realmente el punto de la desaprobación? Para que su código sea más fácil de leer y mantener.


No, no son idénticos, primero debe aumentar y luego devolver el valor. Pruebe esto.

func countingCounter() -> (() -> Int){ var counter1 = 0 let incrementCounter1: () -> Int = { counter1 += 1 return counter1 } return incrementCounter1 }


Se establece claramente en los documentos de Apple , copiados aquí para su conveniencia:

NOTA

Los operadores de asignación compuesta no devuelven un valor. Por ejemplo, no puede escribir let b = a += 2 .

No, el operador ++ no es el mismo que += .