4 Replies
Latest reply on Nov 29, 2019 12:57 PM by The Mentat Assassin
Level 1 (0 points)

I took a look at Swift when it first came out, and was turned off by the inability to do multi-line mathematical expressions.  With the world moving to Swift, I have started looking at Swift 5, and find it still doesn't seem to offer a solution.

In effect, instead of writing an expression like:

a = (b+(c+d)*e + f*g)

I'd prefer to do something like:

a = (b

+ (c+d)*e

+f*g)

and even better still (easy in C):

a = (b               // some comment

+ (c+d)*e        // some other comment

+f*g)          // yet another comment

This sort of thing can be important in comprehensible scientific computation.  Is there a way to do it in Swift?

• ###### Re: Multi-line mathematical expressions
Level 3 (100 points)

I tried out your multiline expression in an Xcode playground (Swift 5.1.2).  You separate at addition (probably also subtraction), but not at multiplication (probably also for division).    Didn't try the comments, but, like C/C++, inline comments should be treated like whitespace during the lexical analysis, so, it should work.

• ###### Re: Multi-line mathematical expressions
Level 3 (100 points)

Has to do with the associativity attributes of the operators.

• ###### Re: Multi-line mathematical expressions
Level 8 (9,205 points)

Ths does not work as written (XCode 11.2 beta in playground)

```     let a = (b
+ (c+d)*e
+f*g)```

Get error: Expected ',' separator (last line)

This requires a space after + on last line, and then works.

```let a = (b
+ (c+d)*e
+ f*g)```

Even comments are accepted. Tested the following:

```let a = (b // b is 18.5
+ (c+d)*e   // c, d, e are 1.7 35.3 310.8
+ f*g)  // f, g are 1.7 18.5```

Gives a: 11549.55

So, what's the problem ?

• ###### Re: Multi-line mathematical expressions
Level 1 (0 points)

Thank you.