首页 > 其他分享 >iOS开发系列--Swift语言

iOS开发系列--Swift语言

时间:2023-05-06 11:44:38浏览次数:45  
标签:String -- iOS var Int 类型 println Swift

概述

Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Python等多种语言的影子。同时在2015年的WWDC上苹果还宣布Swift的新版本Swift2.0,并宣布稍后Swift即将开源,除了支持iOS、OS X之外还将支持linux。

本文将继续iOS开发系列教程,假设读者已经有了其他语言基础(强烈建议初学者从本系列第一章开始阅读,如果您希望从Swift学起,那么推荐你首先阅读苹果官方电子书《the swift programming language》),不会从零基础一点点剖析这门语言的语法,旨在帮助大家快速从ObjC快速过度到Swift开发中。即便如此,要尽可能全面的介绍Swift的语法特点也不是一件容易的事情,因此本文将采用较长的篇幅进行介绍。

  1. 基础部分
    1. 第一个Swift程序
    2. 数据类型
      1. 基础类型
      2. 集合类型
      3. 元组
      4. 可选类型
    3. 运算符
    4. 控制流
  2. 函数和闭包
    1. 函数
    2. 闭包
    1. 属性
    2. 方法
    3. 下标脚本
    4. 继承
  3. 协议
  4. 扩展
  5. 枚举和结构体
    1. 结构体
    2. 枚举
  6. 泛型

基础部分

第一个Swift程序

创建一个命令行程序如下:

1 2 3 4 5 6 import Foundation   /** *  Swift没有main函数,默认从top level code的上方开始自上而下执行(因此不能有多个top level代码) */ println("Hello, World!")

从上面的代码可以看出:

  1. Swift没有main函数,从top level code的上方开始往下执行(就是第一个非声明语句开始执行[表达式或者控制结构,类、结构体、枚举和方法等属于声明语句]),不能存在多个top level code文件(否则编译器无法确定执行入口,事实上swift隐含一个main函数,这个main函数会设置并调用全局 “C_ARGC C_ARGV”并调用由top level code构成的top_level_code()函数);
  2. Swift通过import引入其他类库(和Java比较像);
  3. Swift语句不需要双引号结尾(尽管加上也不报错),除非一行包含多条语句(和Python有点类似);

数据类型

Swift包含了C和ObjC语言中的所有基础类型,Int整形,Float和Double浮点型,Bool布尔型,Character字符型,String字符串类型;当然还包括enum枚举、struct结构体构造类型;Array数组、Set集合、Dictionary字典集合类型;不仅如此还增加了高阶数据类型元组(Tuple),可选类型(Optinal)。

基础类型

Xcode 从6.0开始加入了Playground代码测试,可以实时查看代码执行结果,下面使用Playground简单演示一下Swift的基础内容,对Swift有个简单的认识:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 import Foundation   var a:Int=1 //通过var定义一个变量   //下面变量b虽然没有声明类型,但是会自动进行类型推断,这里b推断为Int类型 var b=2   var c:UInt=3 let d=a+b //通过let定义一个变量   //下面通过"\()"实现了字符串和变量相加(字符串插值),等价于println("d="+String(d)) println("d=\(d)"//结果:d=3   //注意由于Swift是强类型语言,a是Int类型而c是UInt类型,二者不能运算,下面的语句报错;但是注意如果是类似于:let a=1+2.0是不会报错的,因为两个都是字面量,Swift会首先计算出结果再推断a的类型 //let e=a+c   //Int.max是Int类型的最大值,类似还有Int.min、Int32.max、Int32.min等 let e=Int.max //结果:9223372036854775807   var f:Float=1.0 var g=2.0 //浮点型自动推断为Double类型   var h:String="hello "   //emoj表情也可以作为变量或者常量,事实上所有Unicode字符都是可以的 var 

标签:String,--,iOS,var,Int,类型,println,Swift
From: https://www.cnblogs.com/wangjiadashao/p/17376720.html

相关文章

  • iOS开发系列--Swift进阶
    概述上一篇文章《iOS开发系列--Swift语言》中对Swift的语法特点以及它和C、ObjC等其他语言的用法区别进行了介绍。当然,这只是Swift的入门基础,但是仅仅了解这些对于使用Swift进行iOS开发还是不够的。在这篇文章中将继续介绍一些Swift开发中一些不常关注但是又必备的知识点,以便对Sw......
  • 5月6日(周六)
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段含义,以了解数据库表如......
  • VPLS
    目录基础概念总结基本原理控制层面报文转发过程基础实验实验Martini实验kompella缺陷依赖性强MAC地址的学习没有良好的冗余机制收敛慢基础概念总结VPLSVPLS是早期的二层VPN技术,后期被EVPN顶替我们可以把VPLS形成的网络看成是一个大的二层交换机所连接的网络主要部署在园区网与园区......
  • clickhouse语法
    官方中文文档https://clickhouse.com/docs/zh/operations/案例网页:https://blog.csdn.net/qq_41070393/article/details/116783138常用操作--修改表名RENAMETABLEsem_energy_categorTOsem_energy_category;--修改表中字段类型ALTERTABLEsem_energy_device_day_resultMOD......
  • AIGC生产工艺流程之games生产流程
    AIGC生产工艺流程中的“games生产流程”主要是指游戏的生产过程。一般来说,游戏生产流程包括游戏设计、策划、程序开发、美术制作、音效制作等等环节,具体流程可以根据不同公司和项目有所差异。其中游戏设计一般是一个较为重要的环节,主要确定游戏的整体架构和玩法规则;策划环节是根据......
  • idea配置
    一、ideaIDEA全称IntelliJIDEA,是用于java语言开发的集成环境IDE(IntegratedDevelopmentEnvironment),也可用于其他语言的开发。IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计......
  • Ganymed-SSH2和JSch的区别及优缺点
    Ganymed-SSH2和JSch都是Java中用于实现SSH客户端的库。下面是它们的区别及优缺点:区别:Ganymed-SSH2:Ganymed-SSH2是一款轻量级的SSH-2实现,它提供了简单易用的API,支持SSH客户端和服务器端的开发。Ganymed-SSH2主要使用纯Java编写,可以在所有支持Java的平台上运行,不需要任何本地库或......
  • 分布式一致性协议综述(下)
    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"!作者:大能老师|慕课网讲师 前情回顾:分布式一致性协议综述(上),需要回看请点击阅读Raft协议Paxos是论证了一致性协议的可行性,但是论证的过程据说晦涩难懂,缺少必要的实现细节,而且工程实现难度比较高广为人知实......
  • Grafana 系列-统一展示-1-开篇
    系列文章Grafana系列文章Grafana简介Grafana是GrafanaLabs的第一款也是最重要的产品。它的定位是可视化,用于监控展示和可观察性.是当前最为完善、流行的云原生、公有云和企业监控可视化平台。Dashboardanything.Observeeverything无论你的数据存储在哪里,都可......
  • linux局域网通信软件都有哪些?要如何选择?
    出于安全性考虑和上级单位要求,不少原本使用Windows系统电脑的单位都在逐渐把单位内的电脑替代为linux系统电脑,但由于原先使用的局域网通信软件没有做linux适配,无法使用,只能替换为能在linux系统上使用的局域网通信软件。那么linux局域网通信软件如何选择?可以参考以下几点:功能不同的l......