或许网络上有很多成型的介绍,我只想写下来留给自己。欢迎批评。开撸!

1、第一个程序,Hello,world!古人云,学会了Hello,world!这门语言你就掌握了一半了。

print("Hello,World!")

  已经学了这门语言的一半,你是不是很开心?刚开始写这句代码的时候,让我想起了久违的Pascal,一样的书写方式,字符串没有OC里的@来修饰。只是Pascal现在已经销声匿迹了(我一直没发现有用Pascal做开发的公司),很是怀念。现在的脑海里依稀记得04年的第一句Hello,World!

2、定义常量和变量

  swfit中,对象或数据的定义,只有两种 let 和 var。不再需要像OC里边需要指定对象的类型,例如

int i = 1;
UIView *v = UIView()

  常量定义 let i = 1;变量定义 var j = 2; j =3。Xcode里边,系统会智能判断,你定义的类型是否合理,假设你定义一个var i = 1,但再后边并没有对i 的值进行修改,那么系统会给你警示,i的定义应该用let。同样的,如果用let修饰,后边又进行了赋值操作,那么系统会给一个警告,需要用var。数据的类型是根据赋值的内容进行推导出来的。

let u = UIView()
let i = 1
let j:Double = 2
var b = UIButton()
b = UIButton(frame:frame)

  上面几行代码给出了几条语句,根据系统推断:u 是 UIView,i 是Int ,j是Double(可以在变量后边加:然后注明该变量的准确类型,此处如果不加,系统会被认定是Int类型),b是UIButton类型。

3、没有隐式的类型转换。再OC中,如下代码是可以正常编译的

Int i = 1
Double j = 2
j = j + i

  但是在Swift中,就会报错{ Binary operator '+' cannot be applied to operands of type 'Double' and 'Int'},Double 和 Int 无法操作。需要将运算符两边转换成相同的数据类型,如下述代码

let i = 1
var j : Double = 2
j = j + Double(i)

  当然,也可以将Double转成Int,注意:Double转成Int会省略小数位,并不会四舍五入

4、可选值Optional

var i : Double?

  定义一个Double类型的i,可以赋值nil。如果不加问号,就不可以赋值nil。这个特性跟C#中有异曲同工之处。该类型的是不允许直接参与计算的,需要配合符号进行运算,!强制解包计算(如果强制解包的数据是nil,程序会Crash掉),??判断如果为空的话,给出其他值。下边就上代码详细说明

var i : int?
var j : Int
j = i -----编译不会通过,系统会提示让你解包
j = i! -----将i强制解包,程序Crash
j = i ?? 2 -----如果i是nil,将2赋值给j

5、流程控制语句if else switch case ? :,不多赘述,直接看代码

let i = 100
if i < 60 {
print("不及格")
}else{
print("及格了~")
} switch i {
case 0...60 :print("不及格")
default:print("及格了")
}

switch i {
case let j where j = 60 : print("及格")
case _ where i = 60 :print("及格")
case 60 : print("及格")
default: return
}
if i<60?print("不及格") : print("及格了")

  有语言功底的,看如上代码,应该很容易理解。就不做太多的文字说明了。需要强调的一点是switch中 case中,0...60,代表从0到60的所有值。三个.哦。重点强调一下第二种switch的用法。在case中,可以生成新的变量来代替 switch里的变量,并加where来做逻辑判断,如果只要做条件判断,那么可以直接用_代替赋值部分。并且 case接受的值可以是一样的。在switch中,case无法进行穿透。

6、可选值的条件判断

var i : Int? = 100
if let j = i where i <60 {
print(j)
} guard let j = i else {
return
}

  看了上边的代码,是不是开始蒙蒙哒了,因为是新的知识点,我就多嘴说两句,首先 if let  和 guard let,只能用于可选值的判断,如果 i 是 Int类型,上述代码会报错。if let j = i ,表示,当i不为空的时候,设置 j = i,此时j 的类型就是Int类型,后边的where作为条件判断(有数据库知识的同学应该会很亲切)。括号里边执行的代码,也是当 j可以成功赋值的时候才会执行。guard和if类似,判断 i不为空的时候,赋值给 j ,不同点是,guard let后边不能直接跟括号,而是要加else {},括号里的逻辑,就是当i为nil的时候的逻辑。注意:guard let 里边的{}需要加上return

7、循环

sum = 0
for i in 0..<10 { --------0....9 两个点,加小于号,相当于三个. 注意数值的变化,三个.代表可以取到
sum += i
}
print(sum) for _ in 0...9 { ---------如果循环中未用到循环的变量,可以省略用_来代替
print("hello")
} while i < 10 {
i++
}
repeat {
i--
} while i > 10

  for循环和while循环的演示,在Swift中,repeat 代替了do 和while凑成了一对循环。看到repeat,又让我想到了Pascal中的Repeat until 循环,很是亲切。

今天先写到这里,后边我会继续补充其他的内容,希望可以跟大家一起成长。

Swift语法简介(一)的更多相关文章

  1. Swift语法简介(二)闭包

    突然看到别人写的关于Block的帖子,让我突然有一种想写一篇关于闭包的帖子.在我的认知中,Swift中的闭包,就是Object-C中的Block--(或许我的认知太浅了).先上一个闭包的简单例子 le ...

  2. ios -- 教你如何轻松学习Swift语法(三) 完结篇

    前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦.      一.自动引用计数   1.自动引用计数工作机制      1.1 swift和o ...

  3. ios -- 教你如何轻松学习Swift语法(一)

    目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...

  4. Swift语法入门

    正文参考: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Progra ...

  5. ios -- 教你如何轻松学习Swift语法(二)

    前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦.      一.可选类型(重点内容)   1.什么是可选类型?        1.1在OC开 ...

  6. freemarker语法简介

    ftl是一种模板标记语言,用于渲染数据,输入html结构.语法简介如下: ${book.name} ${book.name?if_exists} //值是否存在 ${book.name??} //值是 ...

  7. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  8. Swift语法总结补充(一)

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1. 可选类型是一种类型,String?就是Optional<String>,所以函数参数也可以声明为它2 ...

  9. Swift语法

    Swift语法 标签(空格分隔): Swift 1.打印输出语句 println("Hello, Swift!") 注意每行代码后面无需添加分号作为结束 2.简单值 let---常 ...

随机推荐

  1. DIOCP之编写第一个应用程序(一)

    Server 设计功能如下: 1.支持客户端登录 2.连接数据库进行操作 3.推送信息 4.限制文件上传大小 第一步:创建一个VCL-Forms Application(创建一个标准VCL程序) 第二 ...

  2. 循序渐进Python3(八) -- 0 -- 初识socket

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  3. CSS overflow 属性

     值 描述 visible 默认值.内容不会被修剪,会呈现在元素框之外. hidden 内容会被修剪,并且其余内容是不可见的. scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容. ...

  4. 新年SO交期更新——FP_SO2SAP

    (一)         以下逻辑落在12月26日-2月4日生效,2月5日此段逻辑失效: (二)         针对SO创建日期落在N-1天的新单进行处理: (三)         根据FP运算逻辑: ...

  5. vim 标记 mark 详解 (转载)

    http://www.cnblogs.com/jianyungsun/archive/2011/02/14/1954057.html Vim 允许你在文本中放置自定义的标记.命令 "ma&q ...

  6. 发现 git忽略没用

    git rm --cached GuoJiWeb/Properties/PublishProfiles/Profile1.pubxml

  7. 北邮oj 题

    题目描述 Every year,prince prepares a birthday gift for princess.The gift is a box,which is decorated wi ...

  8. Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像

    此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...

  9. SQL中CONVERT日期不同格式的转换用法

    SQL中CONVERT日期不同格式的转换用法 格式: CONVERT(data_type,expression[,style]) 说明:此样式一般在时间类型(datetime,smalldatetim ...

  10. 【经验记录】Jconsole Jvisualvm 监控Tomcat

    环境:centos 6 1.首先检查hostname是否正确,输入以下命令 hostname -i 如果输出机器ip,则表示正确,如果输出 hostname: Unknown host 查看/etc/ ...