美文网首页
关于Swift的基本了解

关于Swift的基本了解

作者: 农夫_三拳 | 来源:发表于2019-06-13 19:00 被阅读0次

    一直以来都想通过个人的角度,来讲解一下Swift这门新的语言。这中间也纠结了很久,但是每次着手去赘述的时候,总觉得有些多余。因为这些学习的材料在苹果官网是一扒一大推。不过迎着“键盘在手,文艺喂狗!”的想法,还是谈一下吧。

    首先我们了解一下Swift这门语言。Swift就像C语言一样,使用变量来进行存储并通过变量名来关联值。在swift中广泛的使用着不可变的变量,也就是我们常说的常量。但是Swift远远比C语言的常量强大。记住这里说的是比C的常量强大,并不是比C语言强大。这点要理解清楚。在Swift中如果你需要处理的值不需要改变,那使用常量的可以让我们的代码更清晰地表达我们的意图和逻辑。

    除了我们熟悉的类型,Swift还增加了Objective-C中没有的高阶数据类型比如元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,我们可以用一个元组可以返回多个值

    Swift增加了可选(optional)类型,用于处理值缺失的情况。所谓的可选类型,接触过OC的肯定比较清楚一下。可选类型像是Objective-C中使用的nil,但是它可以在任何类型上,不仅仅是类!Swift有了可选类型的存在比OC中的nil指针更加安全也更具表现力。它是Swift许多强大类型的重要组成部分。

    常量和变量

    常量和变量必须在使用前声明,用let来声明常量,用var来声明变量
    
    例如:letmax = 10;
    
    varmin =1;
    
    当然在Swift中我们也可以在一行中声明多个常量或者多个变量发,用都好隔开。
    
    varx = 0.0,y = 0.0,z = 0.0
    
    注意:如果我们的代码中有不需要改变的值,请使用let关键字将它声明为常量。只将需要改变的值声明为变量
    
    类型标注:
    
    当我们声明常量或者变量的时候可以加上类型标注,说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
    
    例如:var welcomeMessage:String
    
    在welcomeMessage中我们可以理解为:”声明一个类型为String,名字为welcomeMessage的变量”
    
    类型为String的意思是可以存储任意String类型的值
    
    welcomeMessage
    
    =“Hello”
    
    我们在Swift中可以根据自己喜欢的字符作为常量和变量名,包括Unicode字符!
    
    例如:let $ = 3.3333,let你好=”Hello word!”,let
    
    ?? =“dogcow”
    
    注意:常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
    
    一旦我们将常量或者变量声明为确定的类型,我们就可以使用相同的名字再次进行声明,或者改变其存储的值的类型。同时我们也不能讲常量与变量进行互转!
    
    注意:如果我们需要使用Swift中保留关键字相同的名称作为常量或者变量名,我们可以使用反引号(^)将关键字包围的方式将其作为名字使用,但是无论如何我们都应当避免使用关键字作为常量或变量名。
    

    输出常量和变量

    在Swift中print(_:separator: terminator:)函数来输出当前常量或变量的值:
    
    注:这也是区别OC语言之处
    
    Swift用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:
    
    print("The current value of friendlyWelcome is \(friendlyWelcome)") //输出"The current value of friendlyWelcome is Bonjour!
    

    注释

    Swift中的注释与C语言的注释非常相似。单行注释以双正斜杠(//)作为起始标记
    
    //这是一个注释
    
    你也可以进行多行注释,其起始标记为单个正斜杠后跟随一个星号(/*),终止标记为一个星号后跟随单个正斜 杠(*/):
    
    与C语言多行注释不同,Swift的多行注释可以嵌套在其它的多行注释之中。我们可以先生成一个多行注释块,然 后在这个注释块之中再嵌套成第二个多行注释。终止注释时先插入第二个注释块的终止标记,然后再插入第一个注释块的终止标记:
    
    /*这是第一个多行注释的开头/*这是第二个被嵌套的多行注释*/这是第一个多行注释的结尾*/
    
    即:/*/**/*/
    

    分号的使用

    与其他大部分编程语言不同,Swift并不强制要求我们在每条语句的结尾处使用分号(;),当然,你也可以按照 你自己的习惯添加分号。有一种情况下必须要用分号,即我们打算在同一行内写多条独立的语句:
    
    let cat ="?"; print(cat) //输出"?"
    

    整数:

    Swift提供了8,16,32和64位的有符号和无符号整数类型。这些整数类型和C语言的命名方式很像,比如8位无符号整数类型是UInt8,32位有符号整数类型是Int32。就像Swift的其他类型一样,整数类型采用大写命名 法。
    
    整数范围
    
    访问不同整数类型的min和max属性来获取对应类型的最小值和最大值:
    
    let minValue = UInt8.min // minValue为0,是UInt8类型
    
    let maxValue = UInt8.max // maxValue为255,是UInt8类型
    

    浮点数:

    浮点数是有小数部分的数字,比如3.14159,0.1和-273.15。
    
    浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字。Swift提供了两种有符号浮 点数类型:
    
    ·Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
    
    ·Float表示32位浮点数。精度要求不高的话可以使用此类型。
    
    ·Double精确度很高,至少有15位数字,而Float只有6位数字。选择哪个类型取决于你的代码需要处理的值的
    
    ·范围,在两种类型都匹配的情况下,将优先选择Double
    
    类型别名
    

    布尔值

    Swift有一个基本的布尔类型,叫做Bool。布尔值指逻辑上的值,因为它们只能是真或者假。Swift有两个布尔常量,true和false:
    
    let orangesAreOrange = true
    
    let turnipsAreDelicious = false
    
    在我们编写条件语句,比如说if语句的时候,布尔值非常的好用
    
    if turnipsAreDelicious {
    
    print("Mmm,tasty turnips!")
    
    } else {
    
    print("Eww,turnips are horrible.")
    
    }//输出"Eww, turnips are horrible."
    

    元组:

    元组把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型
    
    let http404Error =
    
    (404, "Not Found")
    
    我们可以把任意顺序的类型组合成一个元组,这个元组可以包含所有类型
    
    let (statusCode,statusMessage) = http404Error
    
    print("The
    
    status code is \(statusCode)")//输出"The status
    
    code is 404"print("The status message is \(statusMessage)") //输出"The status message is Not Found"
    
    可选类型 (重要)
    
    使用可选类型来处理值可能缺失的情况。可选类型表示:
    
    有值,等于x或者没有值
    Swift的Int类型有一种构造器,作用是将一个String值转换成一个Int值。然而,并 不是所有的字符串都可以转换成一个整数。字符串"123"可以被转换成数字123,但是字符串"hello, world"不行。
    
    下面的例子使用这种构造器来尝试将一个String转换成Int:
    
    let possibleNumber = "123"let convertedNumber = Int(possibleNumber) //convertedNumber被推测为类型"Int?",或者类型"optional Int"
    
    因为该构造器可能会失败,所以它返回一个可选类型(optional)Int,而不是一个Int。一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选类型,也就是说可能包含Int值也可能不包含值。(不 能包含其他任何值比如Bool值或者String值。只能是Int或者什么都没有。)
    
    隐式解析可选类型
    错误处理
    错误处理来应对程序执行中可能会遇到的错误条件,相对于可选中运用值的存在与缺失来表达函数的成功与失败,错误处理可以推断失败的原因,并传播至程序的其他部分。
    当一个函数遇到错误条件,它能报错。调用函数的地方能抛出错误消息并合理处理
    
    func canThrowAnError()
    throws {
     //这个函数有可能抛出错误
    }
    
    一个函数可以通过在声明中添加 关键词来抛出错误消息。当你的函数能抛出错误消息时,你应该在表达式中前置 关键词。
    
    do {try canThrowAnError() //没有错误消息抛出
    
    } catch {//有一个错误消息抛出
    }
    
    一个 语句创建了一个新的包含作用域,使得错误能被传播到一个或多个 从句。
    

    相关文章

      网友评论

          本文标题:关于Swift的基本了解

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