¿Cuáles son los mejores ejemplos de código para ilustrar los beneficios de Swift?

Aquí hay algunas comparaciones entre operaciones equivalentes en Objective-C y Swift:

Inicialización de la matriz:

C objetivo:

NSArray * myArray = [[NSArray alloc] init];

Rápido:

deja myArray = String [] ();

Ambas líneas de código crean una matriz vacía utilizando la sintaxis del inicializador.

La creación de una matriz con elementos también se ve muy diferente:

C objetivo:

NSArray * myArray = [[NSArray alloc] initWithObjects: @ “one”, @ “two”, @ “three”, nil];

Rápido:

var myArray = [“one”, “two”, “three”];

Otro elemento emocionante de Swift es lo limpio y fácil que es leer la sintaxis. Esto permite a los desarrolladores producir código más mantenible mientras se divierten haciéndolo. Además, Swift incluye un bucle for-in que facilita la iteración en matrices, diccionarios, rangos, cadenas y otras secuencias. El bucle puede usar rangos exclusivos e inclusivos, y los paréntesis son opcionales. Tradicional para bucles también están disponibles para su uso también.

Usar el bucle for-in en Swift se vería así:

para índice en 1… 5 {
println (“index: \ (index)”)
}

Esto recorrerá los números del 1 al 5, imprimiendo el índice actual. Esta sintaxis es otra forma en que Swift ha aumentado la legibilidad, lo que hace que sea muy fácil de entender lo que hace el código. A primera vista, Swift parece ofrecer una buena combinación de sintaxis y funciones para el desarrollo de Apple que probablemente ayudará a escribir código conciso y expresar instrucciones de maneras que antes no eran posibles.

El siguiente ejemplo muestra una clase que define un método simple de clase / tipo para agregar dos enteros. Tenga en cuenta que Swift evita la necesidad de una interfaz separada:

C objetivo:

@interface MyClass: NSObject
+ (INT) addValue: (INT) value1 toValue: (INT) value2;
@fin

@ Implementación MyClass
+ (INT) addValue: (INT) value1 toValue: (INT) value2 {
devuelve valor1 + valor2;
}
@fin

Rápido:

clase MyClass: NSObject {
class func addValue (valor: INT, toValue: INT) -> INT {
valor de retorno + toValue
}
}

Tipos de

C objetivo:

Persona * mate = [[Asignar persona] initWithName: @ “Matt Galloway”]; [matt sayHello];

Rápido:

var matt = Persona (nombre: “Matt Galloway”) matt.sayHello ()

Instrumentos de cuerda:

C objetivo:

Persona * persona = …;

NSMutableString * description = [[ NSMutableString alloc] init]; [description appendFormat: @ “% @ tiene% i años.”, Person.name , person.age];

si (persona.empleador) {
[descripción appendFormat: @ “Trabajan para% @.”, person.employer];
}

más
{[description appendString: @ “Están desempleados.”];
}

Rápido:

var description = “” description + = “\ ( person.name ) tiene \ (person.age) años.”

if person.employer {description + = “Trabajan para \ (person.employer)”. }

else {description + = “Están desempleados”. }

Cambiar declaraciones:

C objetivo:

if ([ person.name isEqualToString: @ “Matt Galloway”]) {NSLog (@ “Autor de un interesante artículo de Swift”);}

else if ([ person.name isEqualToString: @ “Ray Wenderlich”]) {NSLog (@ “Tiene un gran sitio web”);}

else if ([ person.name isEqualToString: @ “Tim Cook”]) {NSLog (@ “CEO de Apple Inc.”);}

else {NSLog (@ “Alguien más);}

Rápido:

cambiar persona.nombre {

caso “Matt Galloway”: println (“Autor de un interesante artículo de Swift”)

caso “Ray Wenderlich”: println (“Tiene un gran sitio web”)

caso “Tim Cook”: println (“CEO de Apple Inc.”)

predeterminado: println (“Alguien más”)}

Haga un pedido rápido en el mismo número de líneas que el ejemplo anterior de Haskell (Introducción – HaskellWiki) (aunque con algunas trampas porque Array no tiene operador de concat):

operador infijo ++ {asociatividad izquierda}

@infix func ++ (var lhs: [T], rhs: [T]) -> [T] {
lhs + = rhs
volver lhs
}

func quicksort (l: [T]) -> [T] {
si l.count == 0 {return []}
deja p = l [0]
let xs = Array (l [1 .. devolver quicksort (xs.filter {$ 0 = p})
}