让你看不懂的swift语法
一、Swift杂谈
Swift语法出来时间不长,网络上的各种教程已经铺天盖地,可是基本上全部的教程都是来自官方翻译。
从Swift出来到如今。每天都在学习Swift。以下给出个人感受
- Swift中的非常多概念来源于Objective-c(扩展、协议、外部參数名、闭包内存管理等),假设是Objective-c的老手能够非常快入手
- Swift融合了众多语言的特性。入手简单可是短时间掌握全部语法还是有困难的
- 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语法的更多相关文章
- Swift语法入门
正文参考: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Progra ...
- Swift语法之 ---- ?和!区别
1.常量和变量 Swift语言中是用let来定义常量,并且要初始化.var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称. 2.optional(可选)变量 可选变量用于处 ...
- RxSwift之路 1#Swift语法知识准备
RxSwift之路 1#Swift语法知识准备 在开始学习 RxSwift 之前,一定要对 Swift 相关语法有所了解,否则就很难理解为什么可以这样.关于 Swift 的学习其实只要看看 Swift ...
- 还看不懂同事的代码?Lambda 表达式、函数接口了解一下
当前时间:2019年 11月 11日,距离 JDK 14 发布时间(2020年3月17日)还有多少天? // 距离JDK 14 发布还有多少天? LocalDate jdk14 = LocalDate ...
- 小白学习React官方文档看不懂怎么办?3.元素渲染
直接上代码 const element = <h1>Hello, world</h1>; ReactDOM.render( element, document ...
- 不要写很酷但同事看不懂的Java代码
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.为了提高 Java 编程的技艺,我最近在 GitHub 上学习一些高手编写的代码.下面这一行代码(出自大牛之手)据说可以征服你的朋 ...
- 对于挑战书上的很久之前都看不懂的DP看懂的突破
突破一..牢记问题概念 并且牢记dp状态方程 突破二..一直有一个求和dp转化成O1dp递推的式子看不懂.. 看不懂的原因是..没有分清求和符号作用的范围 提醒:以后遇到求和符号一定明确其求和的式子的 ...
- ios -- 教你如何轻松学习Swift语法(三) 完结篇
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.自动引用计数 1.自动引用计数工作机制 1.1 swift和o ...
- ios -- 教你如何轻松学习Swift语法(二)
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.可选类型(重点内容) 1.什么是可选类型? 1.1在OC开 ...
随机推荐
- [BZOJ3638 && BZOJ3272]带修区间不相交最大K子段和(线段树模拟费用流)
https://www.cnblogs.com/DaD3zZ-Beyonder/p/5634149.html k可重区间集问题有两种建图方式,可能这一种才可以被线段树优化. 换个角度看,这也是一个类似 ...
- 读书笔记_Effective_C++_条款三十五:考虑virtual函数以外的其他选择
举书上的例子,考虑一个virtual函数的应用实例: class GameCharacter { private: int BaseHealth; public: virtual int GetHea ...
- SVN服务器与客户端下载地址_搭建使用
下载地址: http://subversion.apache.org/packages.html Windows CollabNet (supported and certified by Colla ...
- 该死的Ubuntu 16.04不自动续租DHCP的IP
BUG,这是一个BUG,参考:https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1551351,如果不自动续租IP,导致的问题就是网线灯还 ...
- 深入浅出-网络七层模型&&网络数据包
网络基本概念 OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织
- C#高性能大容量SOCKET并发(转)
C#高性能大容量SOCKET并发(零):代码结构说明 C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍 C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs ...
- Bootstrap 3之美07-插件Collapse、Accordion、Modal、Tab、Tooltip、Alert、Carousel
类似Page Header, Breadcrumbs, Dropdowns等,都是Bootstrap的组件,是静态的.如果涉及到交互,Bootstrap提供了插件.这些插件包括: ○ 过渡效果: bo ...
- IPHONE IOS6 模拟器没有HOME按键解决方法
替代home键的快捷键是 Cmd-Shift-H: 双击HOME键就是 Cmd-Shift-H 按两次: 参考:http://www.cnblogs.com/yingkong1987/archive/ ...
- 高手写的“iOS 的多核编程和内存管理”
原文地址:http://anxonli.iteye.com/blog/1097777 多核运算 在iOS中concurrency编程的框架就是GCD(Grand Central Dispatch), ...
- ExtJS GridPanel的ColumnModel 动态加载
var colM = "company,id,flyline"; var colMArr = colM.split(","); var colLength = ...