一、Swift杂谈

Swift语法出来时间不长,网络上的各种教程已经铺天盖地,可是基本上全部的教程都是来自官方翻译。

从Swift出来到如今。每天都在学习Swift。以下给出个人感受

  1. Swift中的非常多概念来源于Objective-c(扩展、协议、外部參数名、闭包内存管理等),假设是Objective-c的老手能够非常快入手
  2. Swift融合了众多语言的特性。入手简单可是短时间掌握全部语法还是有困难的
  3. Swift开发应用更加高速,语言简单介绍,包含了非常多的高级特性

尽管Swift语言非常easy,手机相对于Objective-c要快。可是一些原理的东西还是起源于Objective-c。框架中尽管包含了Swift API,可是API的设计非常多都是苹果特有的,掌握一直到熟练,个人感觉与学习Objective-c不会相差太多。Swift是一个拉开档次的语言,我想他的出现会终结靠Objective-c语法吃饭那些人的高薪。对于那些懂得思想的人,Swift会成为一把利剑。让高手开发起来更加得心应手

二、那些你看不懂的语法

Swift的一些语法还是比較有意思的,这里给出几个小的代码片段,測试一下你看懂了没有:

1、隐式类型与拆封(?

与!)

let possibleString: String?

= "An optional string."

if possibleString {
println(possibleString)
}
let number1 = possibleString!.toInt()
//compile error
let number2 = possibleString.toInt()

2、String是struct。NSString是一个class,他们之间的关系

var str: String = "str"
var nsStr: NSString = "NSString"
var selector: Selector = "selector"
var selector2: Selector = Selector("") str = nsStr
nsStr = str

3、元组的类型怎么写

var tuple: (str: Int, str2: Int) = (2, 3)
tuple.str = 4
tuple.1 = 2
let tuple2 = (4, 5)
//compile error
let2.0 = 1

4、闭包声明

var closurea: (Int, Int) -> Bool = { n1, n2 in return n1 > n2}
var closureb: (Int, Int) -> Bool = {$0 > $1}

5、闭包传引用还是复制。以下打印多少

func add(#number: Int) -> () -> Int {
var ret = 0
func incrementor() -> Int {
ret += number
return ret
}
return incrementor
} let incrementor = add(number: 10)
incrementor()
incrementor()
println(incrementor())

6、auto_closure

var closure1: @auto_closure () -> Int?

= {return 3}()
var closure2: @auto_closure () -> Int = 3
closure1()
closure2()

7、struct哪行代码出错了

struct TestStruct1 {
var test: String = "struct"
} let struct1 = TestStruct1(test: "1111")
struct TestStruct2 {
var test: String = "struct"
init() { }
}
//compile error
let struct2 = TestStruct2(test: "2222")

让你看不懂的swift语法的更多相关文章

  1. Swift语法入门

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

  2. Swift语法之 ---- ?和!区别

    1.常量和变量 Swift语言中是用let来定义常量,并且要初始化.var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称. 2.optional(可选)变量 可选变量用于处 ...

  3. RxSwift之路 1#Swift语法知识准备

    RxSwift之路 1#Swift语法知识准备 在开始学习 RxSwift 之前,一定要对 Swift 相关语法有所了解,否则就很难理解为什么可以这样.关于 Swift 的学习其实只要看看 Swift ...

  4. 还看不懂同事的代码?Lambda 表达式、函数接口了解一下

    当前时间:2019年 11月 11日,距离 JDK 14 发布时间(2020年3月17日)还有多少天? // 距离JDK 14 发布还有多少天? LocalDate jdk14 = LocalDate ...

  5. 小白学习React官方文档看不懂怎么办?3.元素渲染

    直接上代码 const element = <h1>Hello, world</h1>; ReactDOM.render(     element,      document ...

  6. 不要写很酷但同事看不懂的Java代码

    你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.为了提高 Java 编程的技艺,我最近在 GitHub 上学习一些高手编写的代码.下面这一行代码(出自大牛之手)据说可以征服你的朋 ...

  7. 对于挑战书上的很久之前都看不懂的DP看懂的突破

    突破一..牢记问题概念 并且牢记dp状态方程 突破二..一直有一个求和dp转化成O1dp递推的式子看不懂.. 看不懂的原因是..没有分清求和符号作用的范围 提醒:以后遇到求和符号一定明确其求和的式子的 ...

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

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

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

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

随机推荐

  1. BZOJ.4552.[HEOI2016/TJOI2016]排序(线段树合并/二分 线段树)

    题目链接 对于序列上每一段连续区间的数我们都可以动态开点建一棵值域线段树.初始时就是\(n\)棵. 对于每次操作,我们可以将\([l,r]\)的数分别从之前它所属的若干段区间中分离出来,合并. 对于升 ...

  2. 【BZOJ-3527】力 FFT

    3527: [Zjoi2014]力 Time Limit: 30 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 1544  Solved: 89 ...

  3. Jmeter实现对mysql的增、删、改、查

    1.          创建一个存储过程,语句如下: DELIMITER $$; DROP PROCEDURE IF EXISTS test; create PROCEDURE test() BEGI ...

  4. 读书笔记_Effective_C++_条款三十三:避免遮掩继承而来的名称

    名称的遮掩可以分成变量的遮掩与函数的遮掩两类,本质都是名字的查找方式导致的,当编译器要去查找一个名字时,它一旦找到一个相符的名字,就不会再往下去找了,因此遮掩本质上是优先查找哪个名字的问题. 而查找是 ...

  5. 极路由通过SSH添加静态路由表之后无法跳转的问题

    1.确定系统已经开启了转发功能: /etc/sysctl.conf下的配置项目为net.ipv4.ip_forward = 1 2.关闭防火墙的REJECT,也就是修改/etc/config/fire ...

  6. CentOS 7下配置安装KVM

    注意:KVM一切安装和运行都是在root用户下完成的,并且只有root才能支持某些软件. 一.准备工作: 1.关闭selinux,iptables,重启后生效 ##关闭selinux # sed -i ...

  7. How To Allow Blocked Content on Internet Explorer

    Follow the steps below if you are tired of having to "Enable Blocked Content" in IE each t ...

  8. ansible saltstart puppet

    百台以下用ansible , 百台-千台用saltstart , 千台以上用puppet

  9. 在EntityFramework6中管理DbContext的正确方式——1考虑的关键点(外文翻译)

    (译者注:使用EF开发应用程序的一个难点就在于对其DbContext的生命周期管理,你的管理策略是否能很好的支持上层服务 使用独立事务,使用嵌套事务,并行执行,异步执行等需求? Mehdi El Gu ...

  10. [转载] 关于matlab GUI的一点心得

    转载自 落落轻尘 [Fig文件方式,即使用菜单File->New->GUI来设计界面] 首先值得注意的是,在低版本matlab上制作的含GUI的m文件一般不能在高版本的matlab上面运行 ...