//
// main.swift
// swift01
//
// Created by DioneFlora on 16/10/20.
// Copyright (c) 2016年 DioneFlora. All rights reserved.
//
swift第一课
//swift里面没有头文件和实现文件,只有一个swift文件
//swift里面没有main的概念,程序从main.swift开始执行
//swift每一条执行语句可以不用分号结束,多条语句在同一行的时候才需要分号区分
//swift引用其他文件的内容直接引用,不用导头文件
//print是swift里面的打印函数,效率比NSLog要高;可以不使用占位符,拼接采用()
//变量,常量,可选类型,控制流
//变量:定义之后允许改变,通过var表示
//常量:定义了之后不允许改变,通过let,常量定义出来一定要赋值,不赋值会出错
//swift会根据初值来对变量进行自动推断
//明确指明数据类型 let/var 变量名:数据类型=初值
import Foundation
let number = 20
let number1 = 12.3
var number2:Int = 20
//var number2 = 25.6不允许
//不同数据类型之间不能直接运算,必须进行强转let result = number1 + number2
let result:Int = Int(number1) + number2
let result1:Double = number1 + Double(number2)
print("result = (result)")
print("Hello(1234),World(5678)!")
//字符Character:用双引号表示,单个字母,指明类型Character
let cha:Character = "a"
//字符串:String:双引号表示多个字符
let str = "HelloWorld"
//可选类型:如果某一个变量可能为空(nil),那么这个变量就是数据可选类型,可选类型用 ? 进行表示
//打印可选类型会有optional字眼,如果要去掉optional就进行强制解包
//var 变量名:数据类型? = 初值(可以不给初值(var 变量名:数据类型))
var num0:Int? = 50
//num0 = nil(如果不注释,令值为nil 崩溃,提示错误atal error: unexpectedly found nil while unwrapping an Optional value)
let num1:Int = 20
//可选类型不能直接参与运算,必须进行强制解包之后才可以参加运算,强制解包用 ! 表示
//对可选类型进行强制解包必须确保可选类型的值不是nil,否则对nil进行强制解包会导致系统崩溃(即上段注释num0……)
let sum = num0! + num1
print("sum = (sum)")
let 猴子 = "请来的逗比"
print("(猴子)")
println("Hello, World!")
//布尔类型
let flag:Bool = true //false
//条件判断:if
//(1)if后面的小括号可以去掉,大括号不能省略(即使里面只有一句代码)
//(2)if没有非零即真的概念,只有true or false
if(flag){
print("flag is true");
}
let value = 10
if value > 0{
print("value != 0")
}
//(3)可选类型的条件判断
var name:String? = "hello"
//<1>:if-let/var:先判断可选类型name是否为nil,如果不为空,就将name进行强制解包后的值,赋值给temp,然后执行代码段,否则的话就不执行
print(name)
if let temp = name{
print(temp)
}
//<2>if-let/var-where:是在if-let的基础上对定义的局部变量再做一次判断,两个条件都满足的时候执行{}里的代码块
if let temp = name where temp == "hello"{
print("if-let-where:name = hello")
}
//定义一个整形可选值n,如果该整形可选值不为nil,使用for循环打印n遍“hello”
var n:Int? = 8
if let temp = n {
for var i=0;i < temp;i++ {
print("hello")
}
}
//<3>guard:如果可选值count不为nil,就强制解包后的值给temp,否则就执行{}里的代码块,return一定要写
/*func demo(){
let count:Int? = 3
guard let temp = count else{
print("count 为 nil")
return
}
print(temp)
}
demo()
*/
//定义一个整形可选值myValue,如果该值不为nil并且是偶数的话就用for循环打印myValue遍helloWorld,否则就打印该数是奇数
var myValue:Int? = 8
if let temp = myValue where temp % 2 == 0 {
for var i = 0;i < temp;i++ {
print("helloWorld")
}
}else if let temp = myValue where temp % 2 == 1{
print(temp,"该数是奇数")
}
//a = b ?? value
//??是将b这个可选值进行判断,如果b不为nil则对b进行强制解包后的值给a,如果b为nil则为a提供一个默认值value
let bilibili:Int? = nil
let asd = bilibili ?? 3
print("asd = (asd)")
网友评论