zoukankan      html  css  js  c++  java
  • Swift基础语法(一)

      swift是一个基于objc进化过来的一个新的 OS X/IOS编程语言,而objc是基于c语言进化过来的一门编程语言。所以理论上说objc与c++是同一代产物并且objc与c++是相互独立的两套体系,知道这些以后你就不难理解为什么objc与c++混编要把文件名改成mm而objc与c混编不用修改文件名了

    常量与变量

      在swift中常量用let定义,变量用var定义

      定义格式

     1 //定义并且不赋值
     2 //常量
     3 let 标识符 : 数据类型?
     4 //变量
     5 var 标识符 : 数据类型?
     6 //定义且赋值
     7 //常量
     8 let 标识符 : 数据类型= 9 //变量
    10 var 标识符 : 数据类型=值

      特别说一下swift的标识符是用Unicode字符编码表示的,也就是说你出来不能用数字、敏感字段定义变量,其余的各种文字随便用这与objc和c/c++有很大不同。objc和c/c++的标识符是用ASCⅡ码实现的。知道这个原理之后,我做了个实验。

    //函数声明
    func 测试函数(text:String){
            println("(text)")
        }
    //函数调用
    测试函数("22222")

      编译、执行一切OK

    基本类型

      基本类型这一块swift是兼容objc类型的我只对新增类型做一个介绍

    数字类型

      swift的数字类型有Integer/Int/Float/Double

      Integer类型其实就是objc里的Int8类型

      Int/Float/Double 根据运行机器的CPU位数作为变量位数。比如在iPhone5上Int是Int32而在iPhone5s上Int是Int64以此类推

      数字表示:

      十进制:直接写数字 比如var a =10

      二进制:0b加数字 比如 var a=0b1010

      八进制:0o加数字 比如 var a=0o12

      十六进制:0x加数字 比如 var a= 0x0A

      以上这四个变量的十进制表示都是10

    类型别名(typealias)

      swift里的typealias相当于c语言里的typeof

    布尔类型

      swift里的bool相当于与oc里的BOOL只有两个值:true ,false

      swift里的条件判断返回的都是bool 

    //在c里我们可以这么用if
    int a=1;
    if(a)
        printf("%d",a);
    //但我们同样的代码放到swift里
    var a:Int=1
    if a{
        println(a)//error
    }

    元祖(Tuples)

      swift里的tuples当我第一次看到他时,以为他是数组(我X,数组不是Array么?Tuples是什么鬼)仔细一看不是。它既能当数组又能当强类型字典,官方文档里说主要用于函数返回。其实我认为它就是个多功能的结构体(c++),随时使用定义简单

    //定义方式1
    let a=(15,"age")
    //输出15
    println(a.0)
    //输出age
    println(a.1)
    //定义方式二
    let b=(name:"Tony",age:15)
    //输出name:Tony age:15
    println("name:(a.name) age:(a.age)")

    可选类型(Optionals)

      与其说Optionals是基本类型不如说它是每个基本类型的必要属性,如果有值Optionals为true反之Optionals为false。

    var a="123"
    if let b=a.toInt(){
        println(b!)
    }

      如果if后面直接加一个变量是判断这个变量有没有值。 b后面的感叹号是代表b不为nil toInt()函数是把字符串转换为Int类似 你可以把if去掉再把123改成hello试试看会发生什么

    调试专用函数

      调试专用函数assert(条件,字符串)如果条件不成立输出字符串

    今天就写这么多,如有错误尽请指教。本人感激不尽

  • 相关阅读:
    DFS 算法总结
    拆分Cocos2dx渲染部分代码
    [OpenGL]纹理贴图实现 总结
    [LeetCode] Minimum Size Subarray Sum 最短子数组之和
    LRU Cache 题解
    Substring with Concatenation of All Words 题解
    multimap和multiset 认知和使用
    OpenGL ES 3.0 基础知识
    Cocos2dx坐标转换
    视图
  • 原文地址:https://www.cnblogs.com/dctechnology/p/4508037.html
Copyright © 2011-2022 走看看