美文网首页
重新拾起Swift第一天

重新拾起Swift第一天

作者: 爆炸的白菜君 | 来源:发表于2017-04-10 21:06 被阅读11次

let声明常亮
var声明变量
有自动推断的功能,也可以指明数据类型

let explicitDouble: Double = 70

任何类型的数据不会被隐式转换成其他类型的数据,就像这里的width,不会像JS直接回转成String,

let label = "The width is"
let width = 94
let widthLabel = label + width

error: binary operator '+' cannot be applied to operands of type 'String' and 'Int'

正确的做法

let label = "The width is"
let width = 94
let widthLabel = label + String(width)

字符串的快捷转换符号‘()’

let time:Float = 8

let hello = "Good morning ! Time is AM \(time)"

数组字典的初始化

//数组

var animals = ["pig","dog","cat","rubbit"]
let pig = animals[0];


//字典
var dictionary = [
    "xiaoming" : "10",
    "xiaohong" : "12"
];

var xiaoming = dictionary["xiaoming"]

空数组,空字典的创建,一定要指定数据类型

//空数组,空字典初始化
var arr = [String]();
var dic = [String:Float]();

也可以自动推理出数据类型,因为上面的代码已经指明了animals和dictionary的数据类型了

//如果可以推断出来
animals = []
dictionary = [:]

可选数据类型 if let optional = value {
}
如果value不为nil
可选数据的定义以及初始化

var optional:String?
var optional1:String? = “abc”

总结:
Swift中的数据只要被定义出来就要给一个数据类型(Int,String, Float)不必给一个确切的值,在使用这个数据的时候就必须要有值,或者是可选类型(可为nil)例如

var abc         //是错的
var cde:Int     //是对的

var abc:Int
print(abc)      //是错的
var abc:Int?
print(abc)      //是对的
var abc = 10    //自动推导abc是Int型数据
print(abc)      //是对的

可选值的默认值 使用 ?? 连接,如果可选类型的数据为nil。

let myName:Int? = nil
let moren:String = "abc"
print(myName ?? moren)

Switch语句
Swift中Switch语句可以判断的值可以是任意类型,每个case结束也不必加上break,Switch必须完整,default不能缺省

let vegetable = "red pepper"
 switch vegetable {
 case "celery":
     print("Add some raisins and make ants on a log.")
 case "cucumber", "watercress":
     print("That would make a good tea sandwich.")
 case let x where x.hasSuffix("pepper"):
     print("Is it a spicy \(x)?")
 default:
     print("Everything tastes good in soup.")
 }

遍历字典,使用 for in 语句。

var largest:Int?
var largestKind:String?

for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest ?? 0 {
            largest = number;
            largestKind = kind;
        }
    }
}

print(largest!)
print(largestKind!)

while语句的使用

var total:Int = 1
while total < 100 {
    total = total + total;
}
total

var total2:Int = 100
repeat{
    total2 = total2 + total2;
}while total2 < 100
total2

for循环的使用, ..< 包含左不包含右 …包含左包含右

var total3:Int = 1;
for i in 1..<5 {
    total3 = i;
}

函数和闭包
使用func来声明一个函数
->表示返回值类型

func greetFun(person:String, day:String) -> String{
    return "Good Morning \(person), today is \(day)";
}

greetFun(person: "xiaoming", day: "Monday")

使用参数标识替换原有参数, _是在参数可以省略的情况下使用, on就替换原来的参数

func greetFun2(_ person:String, on day:String) -> String{
    return "Good Morning \(person), today is \(day)"
}

greetFun2("xiaoming", on: "Monday")

返回多个参数的函数,返回元祖类型的数据,元祖类型的数据可以使用()包起来,使用的时候可以使用变量的名称,或者脚标来直接获取

func toolFunc(Arr:[Int]) -> (sum:Int, max:Int, min:Int){

    var max = Arr[0];
    var min = Arr[0];
    var sum = 0;
    
    for num in Arr {
        if num > max {
            max = num;
        }
        if num < min {
            min = num;
        }
        sum += num;
    }
    
    return (sum, max, min)
}

var result = toolFunc(Arr: [12, 32, 1, 21, 43, 21, 54])
result.sum
result.max
result.min
result.0

在Swift中参数个数可以不固定

func sumFunc(numbers:Int...) -> Int{
    var sum = 0;
    for number in numbers{
        sum += number;
    }
    return sum;
}

var sum = sumFunc(numbers: 1,4,3,5,7)

函数可以嵌套使用,内部函数可以是用外部函数里的局部变量,但是外部函数不能使用内部函数里的句不变量

func returnFifteen() -> Int{
    var y = 10;
    func add() -> Int{
        y += 5;
        return y
    }
    add()
    return y;
}

returnFifteen()

相关文章

  • 重新拾起Swift第一天

    let声明常亮var声明变量有自动推断的功能,也可以指明数据类型 任何类型的数据不会被隐式转换成其他类型的数据,就...

  • thinking in Swift:重新审视装饰器模式

    thinking in Swift:重新审视装饰器模式 thinking in Swift:重新审视装饰器模式

  • 一年半的听书会员,我要听个够

    重新拾起爱好

  • 重新拾起

    今天是假期的第15天,在这15天当中一直都是处于一种颓废的状态,连最喜欢的练字这一爱好也几乎快要丢弃了,很难再寻得...

  • 重新拾起

    已经快两年没有在网上写过任何文章了,这两年来看了不少书,对于生活,工作,投资以及爱情都开始有一些自己个人的看法。 ...

  • 重新拾起

    已经很久很久没有继续写了。算一算,二月十号左右还在更新,至今快到七月,有差不多五个月了。 转眼间半年已过~ 每一次...

  • 重新拾起

    很多时候,突然想起来自己曾经有学过,或者做过什么,那这时候,想重新来一次,这时候,我们就会想起,该是重新拾起了。 ...

  • 重新拾起

    第一篇文章写于2017年6月16日,截至今日2022年4月12日,累计字数:287360字 中途断断续续停更...

  • 重新拾起

    3月份报12节私教课,兜兜转转终于回到了之前的状态,现在已经4月份了,还有一半的课。接下来要好好训练。 其实这两个...

  • 重新拾起

    连续4天了,我们这里都是37度左右的高温,在这样的高温下我反正是不想出门的,即便有人出门,也是迫不得已,比如,打工...

网友评论

      本文标题:重新拾起Swift第一天

      本文链接:https://www.haomeiwen.com/subject/tueeattx.html