 
 
 // 比较运算符 ==  !=  >  <  >=  <=
-// 恒等===和不恒等！==来判断两个对象是否引用同一个对象实例
-/* 如果两个元组的元素相同，且长度相同，元组就可以被比较。比较元组大小按照从左到右、逐值比较的方式，直到发现两个值不等时停止。如果所有值都相等，那么这一对元组我们就称它们是相等的*/
-(1, "zebra") < (2, "apple")
-(3, "apple") < (3, "bird")
-(4, "dog") == (4, "dog")
- 
- 
+/*
+ 恒等===和不恒等！==来判断两个对象是否引用同一个对象实例
+ */
+print(1 == 1)
+print(2 != 1)
+print(2 > 1)
+print(1 < 2)
+print(1 >= 1)
+print(2 <= 1)
+
+let name = "world"
+if name == "world" {
+    print("hello, world")
+} else {
+    print("I'm sorry \(name), but I don't recognize you")
+}
+
+/*
+ 如果两个元组的元素相同，且长度相同，元组就可以被比较。比较元组大小按照从左到右、逐值比较的方式，直到发现两个值不等时停止。
+ 如果所有值都相等，那么这一对元组我们就称它们是相等的.
+ Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时，你需要自己实现比较运算符。
+ */
+print((1, "zebra") < (2, "apple"))
+print((3, "apple") < (3, "bird"))
+print((4, "dog") == (4, "dog"))
+
 // 三元运算符
-// 问题？答案1：答案2.
-// 等价于
-//if question {
-//    answer1
-//} else {
-//    answer2
-//}
-
+/*
+ 问题？答案1：答案2.
+ 等价于
+ if 问题 {
+     答案1
+ } else {
+     答案2
+ }
+ */
 let contentHeight = 40
 let hasHeader = true
 

var str = "Hello, playground"

// 术语
// 运算符有一元、二元、三元运算符。受运算符影响的值叫做操作数。

// 赋值运算符
// （a = b）用b的值来初始化或更新a的值
let b = 10
var a = 5
a = b

// 如果赋值的右边是一个多元组，它的元素可以马上被分解成多个常量或变量
let (x, y) = (1, 2)
// swift的赋值操作并不返回任何值。
//if a = b { // 错误
//    
//}

// 算符运算符
// 四则算术运算：+，-，*，/
// swift默认情况下不允许在数值运算中出现溢出情况。可以使用Swift的溢出运算符来实现溢出运算（a &+ b）
// 加法运算符也可用于String的拼接

// 求余运算符（取模运算）%
// 在对负数b求余时，b的符号会被忽略。这意味着a%b和a%-b的解惑是相同的。
print(9 % -4)
print(9 % 4)
print(-9 % 4)

}

// 空合运算符
/*
 空合运算符（a ?? b）将对可选类型a进行空判断，如果a包含一个值就进行解析，否则就返回一个默认值b.
 这个运算符有两个条件：
 1. 表达式a必须是Optional类型。
 2. 默认值b的类型必须要和a存储值得类型保持一致。
 等价于 a != nil ? a! : b
 短路：若a非空，b不会被估值
 */

let defaultColorName = "red"
var userDefineColorName: String?
