Swift - Lösung eine mathematische operation in eine Zeichenfolge
nur eine kurze Frage. Im Swift ist es möglich, lösen Sie den folgenden code:
var a: String;
a = "\(3*3)";
Die arithmetische operation in der Schnur gelöst werden. Aber ich kann nicht herausfinden, warum diese Variante nicht funktioniert.
var a: String;
var b: String;
b = "3*3";
a = "\(b)";
In diesem Fall die arithmetische operation in eine var nicht gelöst werden. Irgendwelche Ideen, warum, und wie kann ich diese bekommen, um zu arbeiten. Manches wäre viel einfacher, wenn das funktionieren würde. Vielen Dank für Eure Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im zweiten Fall, Sie sind Interpolation ein string, nicht einen arithmetischen Ausdruck. In deinem Beispiel ist es ein string, den Sie wählte zur compile-Zeit, aber im Allgemeinen könnte es ein string von dem Benutzer oder aus einer Datei geladen oder über das Internet. In anderen Worten, zur Laufzeit
b
könnten enthalten einige beliebige Zeichenfolge. Der compiler ist nicht verfügbar zur Laufzeit zu analysieren, einen beliebigen string als arithmetischen.Wenn Sie auswerten wollen, einen beliebigen string als eine arithmetische Formel zur Laufzeit, die Sie verwenden können,
NSExpression
. Hier ist ein sehr einfaches Beispiel:Können Sie auch eine Drittanbieter-Bibliothek wie
DDMathParser
.Diese nicht gelöst werden, denn dies ist nicht eine arithmetische operation, dies ist ein string:
gleich wie dieser
Alles, was Sie in
"
es ist ein string.Zweiten Beispiel können Sie konstruieren einen neuen String-Wert aus einer Mischung von Konstanten, Variablen, Literale und Ausdrücke:
dies ist möglich, weil der string-interpolation
\()
Die Sie eingefügt eine string-Ausdruck, der die swing konvertieren und erstellen Sie das erwartete Ergebnis.
Swift 4.2
Aber ich habe auch eine Lösung, das ist nicht der effektivste Weg, konnte aber in einigen Fällen verwendet werden, wenn Ihr sicher, dass es nur "y+x" und nicht mehr string.
Kann ich nicht empfehlen dies, aber es funktioniert in einigen Fällen