语法特点:借鉴了OC、C#、JavaScript、Rython等语言特点



同时具备编译型语言的高性能和脚本语言的灵活性。代码简洁, 可以轻松与OC、C混合使用(相互调用)



       开发条件:Xcode >= 6.0、OS X > 10.9.3



 二、语法须知:源文件拓展名:.swift



       1、不需要编写main函数:从上往下顺序执行,最前面的代码会自动当作程序的入口



也可以加分号



有一种情况必须加分号:同一行代码上有多条语句时



多行注释可以嵌套注释



用 let 声明常量:let radius = 1.2



用 var 声明变量:var x = 1.1,,y = 2.1,


Swift程序: 
  
 
  
        var btn = UIButton()
        btn.frame = CGRectMake(20, 20, 100, 80)
        btn.backgroundColor = UIColor.blueColor()
 
  
        self.view.addSubview(btn)
        var imageView = UIImageView(image: UIImage(named: "2x"))
        imageView.frame = CGRectMake(20, 100, 100, 100)
        self.view.addSubview(imageView)
 
  

      
  
 
  
Playground的使用: 
  
 
  
import UIKit
//var str = "Hello, playground"
//var num = 12
//num++
//num += 11 + 12 * 3
 var btn = UIButton()
btn.frame = CGRectMake(0, 0, 100, 100)
btn.backgroundColor = UIColor.redColor()
btn.layer.cornerRadius = 10
btn


测试用,逐行显示



 



字符串的简单操作:


var str = "a b c"
var str2 = " d e f"
var string = str + str2   //  拼接字符串
var age = 18;   var num = 1024
var name = "lily"
var lily = name + " is \(age) years old, and no " + String(num)
print(lily)


 



基本上可以用任何喜欢字符作为常量或变量的命名



Mac上通过用control+command+空格 :弹出emoji键盘= ?、?



数字符号(+—*/)、箭头()、非法无效的Unicode字符(⚽️)、关键字、数字开头、单独下划线、、、



 



三、数据类型



Int、Float、Double、Bool、Character、String、Array、Dictionary、Tuple(元组类型)、Optional(可选类型)首字母大写



在常量/变量名后加冒号和类型名称



let age: Int = 18     // 定义了一个Int类型的常量age



一般没必要指明类型,如果在声明时赋了初始值,Swift自动判断类型



 



1、变量的初始化:  Swift严格要求变量在使用之前必须进行初始化



swift并不会为变量赋初始值、否则会报错



 



2、整数:   Swift强类型的语言(不同类型计算会报错)



Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64



可以通过 min 和 max 获取某个属性的最小值、最大值


let minValue = Int8.min      //  -128
       let maxValue = Int8.max      //   127
 
   
 Int / UInt 
      
    长度和当前系统平台一样(64位)



两数据类型不同进行运算、超出数据类型的范围数字都会报错



每种数据类型都有各自的存储范围、如果数值超过了存储范围,编译器会直接报错          //   UInt8 不能存储负数



10进制:无前缀           let me =  10



二进制:以0b 为前缀   let me =  0b1010



八进制:以0o 为前缀  let me =  0o12



                     16 进制:以0x 为前缀   let me =  0xA  



 



3、浮点数: 两种类型Double(64位)精度至少15位小数、Float(32位)精度至少6位小数



Double类型:let m : Float = 12.2 ; let n = 12.3



                          var mn = Double(m) + n



浮点数可以是10进制/16进制两种来表示



       10进制:let d1 = 12.5



             let d2 = 0.125e2    //  MeN :M*10的N次方



以0x为前缀,且一定要有指数



let d3 = 0xC.8p0    //  0xMpN :0xM * 2的N次方


 



4、数字格式:可以增加额外的零         // 001258.000



0000.0001



增加额外的零 0 和 额外的下划线 _ ,并不影响数值



 



5、类型转换、类型别名:



赋值时确定了数据类型



⚠️下面写法正确:let sum = 5 + 1.6     //  先做运算、在赋值,为 Double 类型


可以用 typealias 关键字定义类型的别名(类似 C 中 typedef)



               typealias MyInt = Int    //  给 Int 取别名 MyInt



原类型名称能用在哪些地方,别名就能用在什么地方:let k = MyInt(d1) + age