美文网首页
Swift 基本语法

Swift 基本语法

作者: 小强七号 | 来源:发表于2019-07-16 10:59 被阅读0次

    注释

    Swift的注释与C语言机器相似,单行注释以两个反斜线开头:
    //这是一行注释

    多行注释以/*开始 以 */结尾

    /* 这也是一行注释
    但跨行越多行 */
    

    与C语言多行注释有所不同的是,Swift的多行注释可以嵌套在其他多行注释内部。写法是在一个多行注释块内嵌套另一个多行注释。第二个注释块封闭时,后面仍接着第一个注释块:

    /* 这是第一个多行注释的开头
    /* 这是嵌套的第二个多行注释 */
    这是第一个多行注释的结尾 */
    

    多行注释的嵌套可以更快捷方便的注释代码块,及时代码块中已经有了注释。

    分号

    与其他语言不同的是,Swift不要求在每行语句的结尾使用分号(;),但是如果是同一行写多条语句时,需要用分号(;)隔开:

    import Cocoa
    
    /* print hello world 是我的第一个Swift程序 */
    
    var printStr = "Hello World!"; print(printStr)
    
    

    标识符

    标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议等指定名字。构成标识符的字母均有一定的规范。Swift语言中标识符的命名规则如下:

    • 区分大小写,Str与str是两个不同的标识符;
    • 标识符首字符可以是下划线(_)或者字母开始,但不能是数字;
    • 标识符中其他字符可以是下划线(_)、字母或数字

    例如:userName、User_Name、_sys_val、等均为合法标识符,而 2mail、room#和class为非法的标识符。
    注意:Swift中字母采用的Unicode编码。Unicode叫做同意编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们聊天工具中使用的表情符号,如果一定需要用到关键字作为标识符,可以在关键词前后添加重音符号(`),例如:

    let `class` = "小强五号"
    

    关键字

    关键字是类似于标识符的保留字符序列,除非用重音符(`)将其括起来,否则不能用作标识符。关键字对编译器具有特殊意义的预订保留标识符。常见的关键字有以下4种。

    一.与声明有关的关键字
    class deint enum extension
    func import init internal
    let operator private protocol
    public static struct subscript
    typealias var
    二.与语句有关的关键字
    break case continue default
    do else fallthrough for
    if in return switch
    where while
    三.表达式和类型有关的关键字
    dynamicType as false is
    nil self Self super
    true _COLUMN_ ** _FILE_** _FUNCTION_
    _LINE_
    四.在特定上下文中使用关键字
    associativity convenience dynamic didSet
    final get infix inout
    lazy left mutating none
    nonmutating optional override postfix
    precedence prefix Protocol required
    right set Type unowned
    weak willSet

    Swift空格

    Swift语言并不像C/C++,java那样完全忽视空格,Swift对空格的使用有一定的要求,但是又不像Python对缩进的要求那么严格。在Swift中,运算不能直接跟在常量或常量的后面,例如下面的代码逻辑会报错:

    let  a= 1 + 2
    

    错误信息是:

    error:'=' must have consistent whitespace on both sides 
    Insert ' '
    

    正确写法:

    let a = 1 + 2
    let b = 3+4
    

    Swift 字面量
    所谓字面量,就是指像特定的数字,字符串或者布尔值这样,能够直接了当支出自己的类型并为变量进行赋值。比如下面:

    42  // 整型字面量
    3.14159  // 浮点型字面量
    "Hello World!"   // 字符串型字面量
    true       //布尔型字面量
    

    打印信息

    Swift 使用print 函数打印输出:

    print("hello world!")
    

    print 函数是一个全局函数,完整的函数签名为:

    public func print(items: Any..., separator: String = default, terminator: String = default)
    
    

    如果我们想让其不换行输出,只需要将最后一个参数赋值为空字符串即可:

     func mj_logArrayMes() -> Void {
            for index in 0...10 {
                print("\(index)", terminator: " ")
            }
        }
    

    输出结果为:

    0 1 2 3 4 5 6 7 8 9 10 
    

    如果你需要接受用户的输入可以使用readLine():暂时不知道怎么使用

    结构体

    Swift 结构体是构建代码所用的一种通用且灵活的结构体。
    我们可以为结构体定义属性(常量、变量)和添加方法,从而拓展结构体的功能。
    与 C 和 OC 不同的是:

    • 结构体不需要包含实现文件和接口
    • 结构体允许我们创建一个单一文件,且系统会自动生成面前其他代码的外部接口。

    结构体总是通过被复制的方式在代码中传递,因此他的值时不可以修改的。

    语法

    我们通过关键字 struct 来定义结构体:

    struct nameStruct {
    Definition 1
    Definition 2
    ……
    Definition N
    }
    

    我们定义一个名为 MarkStruct 的结构体 ,结构体的属性为学生三个科目的分数,数据类型为 Int:

    struct MarkStruct{
       var mark1: Int
       var mark2: Int
       var mark3: Int
    }
    

    我们可以通过结构体名来访问结构体成员。
    结构体实例化使用 let 关键字

    struct studentMarks {
       var mark1 = 100
       var mark2 = 78
       var mark3 = 98
    }
    let marks = studentMarks()
    print("Mark1 是 \(marks.mark1)")
    print("Mark2 是 \(marks.mark2)")
    print("Mark3 是 \(marks.mark3)")
    

    以上程序执行输出结果为:

    Mark1 是 100
    Mark2 是 78
    Mark3 是 98
    

    实例中,我们通过结构名 ‘studentMarks’访问学生的成绩。结构体成员初始化mark1,mark2,mark3,数据类型为整型。然后我们通过使用 let 关键字将结构体 studentMarks() 实例化并传递给 marks。最后我们就通过 . 号来访问结构体成员的值。以下实例化通过结构体实例化时传值并克隆一个结构体:

    struct MarksStruct {
       var mark: Int
    
       init(mark: Int) {
          self.mark = mark
       }
    }
    var aStruct = MarksStruct(mark: 98)
    var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的结构体!
    bStruct.mark = 97
    print(aStruct.mark) // 98
    print(bStruct.mark) // 97
    

    以上程序执行输出结果为:

    98
    97
    
    结构体的应用

    在你的代码中,你可以使用结构体来定你的自定义数据类型。结构体实例总是通过值传递来定你的自定义数据类型。按照通用的准则,当符合一条或多条条件时,请考虑结构体:

    • 结构体的主要目的是用来封装少量相关简单的数据
    • 有理由预计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是引用
    • 任何在结构体中储存的值类型属性,也将会被拷贝,而不是引用
    • 结构体不需要继承另一个已存在类型的属性或者行为。

    举例来说,以下情境中适合使用结构体:

    • 几何形状的大小,封装一个width属性和height属性,两者均为Double类型。
    • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。
    • 三维坐标系内一点,封装x,y和z属性,三者均为Double类型。

    结构体实例是通过值传递而不是通过引用传递。

    struct markStruct{
        var mark1: Int
        var mark2: Int
        var mark3: Int
        
        init(mark1: Int, mark2: Int, mark3: Int){
            self.mark1 = mark1
            self.mark2 = mark2
            self.mark3 = mark3
        }
    }
    
    print("优异成绩:")
    var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
    print(marks.mark1)
    print(marks.mark2)
    print(marks.mark3)
    
    print("糟糕成绩:")
    var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
    print(fail.mark1)
    print(fail.mark2)
    print(fail.mark3)
    

    输出结果是:

    优异成绩:
    98
    96
    100
    糟糕成绩:
    34
    42
    13
    

    以上实例中我们定义了结构体 markStruct,三个成员属性:mark1, mark2 和 mark3。结构体内使用成员属性使用 self 关键字。从实例中我们可以很好的理解到结构体实例是通过值传递的。

    相关文章

      网友评论

          本文标题:Swift 基本语法

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