问题
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)
isInt
, 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.
来源:https://stackoverflow.com/questions/24767681/single-element-parethesized-expressions-tuples-vs-common-use-of-parentheses