zoukankan      html  css  js  c++  java
  • swift学习笔记->基础类型

    今天开始我们来学习swift

    学习任何一门语言都是从基础类型开始学起,废话不多说,来看看swift的基础类型

    整形:int

    浮点型:float  double

    字符型:string(字符串)  Character(字符)

    布尔类型:Boolean

    集合类型:array(数组)  dictionary(字典) tuple(元祖)

    基本的类型与别的语言没什么区别   我们来看看一些不一样的

    String,java语言有  但C语言是没有的,下面看看String类型的操作

    var str : String //声明一个空的字符串变量str
    var str1: String = String()//声明并实例化str1
    var str2: String = "abc"//声明字符串str2并赋值abc
    var str3 = "abc"//声明字符串str2并赋值abc

    这里说明一下,var声明的都是变量,而 let 则是声明常量  语法一样

    或许有人会很奇怪  str3并没有声明类型  为什么不出错, 因为swift有个类型推断  会根据你声明时等号右边的值推断出变量的类型

    再来看看字符串的操作

    var str = "hello"
    str.characters.count//字符串长度
    str.startIndex//返回字符串开始下标
    str.endIndex//返回字符串结束下标
    str[str.startIndex]//输出第一个字符h
    str.startIndex.successor()//返回开始下标的下一个下标
    str.endIndex.predecessor()//返回结束下标的上一个下标
    str.startIndex.advancedBy(2)//返回开始下标+2的下标(参数可为负数 同理)
    //字符串截取"llo",从给定下标开始向后截取
    str.substringFromIndex(str.startIndex.advancedBy(2))
    //字符串截取"he" 从给定下标开始向前截取
    str.substringToIndex(str.startIndex.advancedBy(2))    
    //还可以进行范围截取 定义一个范围 ran(这里用到Range传入两个参数分别是范围开始和结束)
    var ran = Range(start: str.startIndex.successor(), end: str.startIndex.advancedBy(3))
    str.substringWithRange(ran)
    str.hasPrefix("he")//判断字符串是否以"he"开头
    str.hasSuffix("ld")//判断字符串是否以"lo"结束
    //插入字符操作 (第一个参数是要插入的字符,第一个是要插入的下标位置)
    str.insert("a", atIndex: str.startIndex)
    //插入字符串操作 (同上)
    str.insertContentsOf("abc", at: str.startIndex)

    可以看到 所有方法所需要的下标都不是int数字,因为字符串类型中是可以插入表情的,表情在内存中所占字节并不确定,所以用int类型下标访问会造成错误

    swift字符串有自己独有的下标  需要调用方法来返回

    另外其他类型转换成字符串有个简单的插值法  不像java语言可以直接用+号连接

    var str = "hello"
    let i = 6
    var str2 = "hello (i)" //插值法

    再来看看以前没见过的:dictionary(字典)

    var dic : Dictionary<String,String> = ["a":"c","b":"d"]//实例化并赋值一个字典
    var dic1 : Dictionary<String,String>                      //声明一个字典但不实例化
    var dic2 = Dictionary<String,String>()                  //实例化一个空字典
    //如你所见  字典实际上是一个个键值对(key,value)和java的json对象类似
    dic.count//字典的长度
    dic["a"] = "s"//可使用字典的key作为下标修改对应的value
    dic.updateValue("s", forKey: "c")//调用修改方法修改key对应的value
    for (index,value) in dic {
        print(index,":",value)
    }//循环迭代输出字典
    dic.values //字典的value集合
    dic.keys//字典的key集合

    大致上代码都能看得懂了,这里有个for  in  javascript中是有这个迭代语法的  java中的for each同理

    swift语言号召着精简   所以for循环条件的小括号简化了  以后的控制流程语句(if,swith。。。)都将省略小括号

     最后来看元祖 元祖是可重复不同类型数据的集合

    var tuple = ("张三" ,22, true , 1.76)//定义并赋值一个元祖
    tuple.0                                         //访问元祖第一个对象
    var tuple1 = (name:"张三" ,age:22,jude:true ,heiget:1.76)//定义并赋值一个元祖
    tuple1.name
    var (name,age,jude,height)=tuple    //所有对象进行赋值
    name
    age
    jude
    height

    值得一提的是  你可以通过元祖的下标或别名访问并修改它的值,但不能修改类型

  • 相关阅读:
    JSP_内置对象_out
    POJ_2186_Popular Cows_强连通分量
    POJ_2411_Mondriaan's Dream_状态压缩dp
    POJ_2115_扩展欧几里德
    HDU_5690_快速幂,同余的性质
    POJ_1061_扩展欧几里德
    HDU_5833_高斯消元
    Delphi 使用 Datasnap 的几种三层应用技术总结
    BIM 开发商 --广州
    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
  • 原文地址:https://www.cnblogs.com/pengser/p/4967416.html
Copyright © 2011-2022 走看看