Single-element parethesized expressions/tuples vs

2019-02-25 11:19发布

问题:

Sorry if this is trivial - I am so new to swift, actually I have only looked at the language guide+reference for a few minutes.

As far as I understand a parenthesized expression like (2,3) is used to construct a tuple, and (2) is a single-element tuple of type (Int).

But then what happens with common use of parentheses like (2+4) in expression (2+4)*5? Is this still a tuple of type (Int) multiplied by an Int?

回答1:

From Types in the Swift book:

If there is only one element inside the parentheses, the type is simply the type of that element. For example, the type of (Int) is Int, not (Int).

So the type of (2) or (2+4) is simply Int, and the * in (2+4)*5 is just integer multiplication.



回答2:

+, * etc are infix operators, and they have a semantic meaning that's different from the comma ,, so the compiler treats it in a different way.