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

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. c++ 二维数组传递

    c++ 二维数组传递 我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法 在讲解如何传递二维数组时,先看看如何动态new 二维数组 // 二维数组动态申请 int row , ...

  2. 自定义ViewGroup

    ViewGroup --->A ViewGroup is a special view that can contain other views (called children.) The v ...

  3. Android之数据库升级onUpgrade降级onDowngrade

    借用API文档解释: public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 当数据库需要升 ...

  4. Java基础知识系列——Exception

    异常在编程中使用频率非常非常的高,在Java中异常的基类是Exception. 下面就介绍一下Java中的异常: 1.结构 try{ //捕获try里的异常 }catch( Exception e){ ...

  5. Android 7.0 UICC 分析(三)

    本文讲解UICCCardApplication /frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/UiccC ...

  6. 【转】 教大家防止Jar包被反编译

    http://blog.csdn.net/zhengjingle/article/details/50833746 在需要放置编译的java类中加一个无用的class,然后再把class的名字修改了, ...

  7. 利用SlidingPaneLayout实现侧滑

    利用SlidingPaneLayout实验仿QQ侧滑效果 1.效果图            2.布局文件 <?xml version="1.0" encoding=" ...

  8. C# Using 用法

    using 语句允许程序员指定使用资源的对象应当何时释放资源.为 using 语句提供的对象必须实现 IDisposable 接口.此接口提供了 Dispose 方法,该方法将释放此对象的资源. 一起 ...

  9. js中的一些容易混淆的方法!

    数组的一些方法: 1.join()和split()方法  与之相反的是split()方法:用于把一个字符串分割成字符串数组.  注意返回的数组中不包括separator本身: 提示和注释注释:如果把空 ...

  10. jQuery实现折叠下拉效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...