Swift编程权威指南第2版 读后收获
classDog: NSObject{
letorigin: String= "中国"
fileprivatevarname: String?
privatevarage: Int? init(_name: String?, age: Int= 1) {
self.name= name ?? "旺财"
self.age= age
}
}
定义了一个Dog类,一个常量“origin”,当一个变量被定义成let型,则只能被赋值一次。“name”和”age”是两个可空类型的变量。重载了一个init方法,在init方法中有两个形参。“name”为可空类型,”age”的默认值为一。在init方法中将这两个变量赋值给属性。其中判断name有值就设置name,为空时设置默认值“旺财”。
let sum: ((Int,Int) -> Int) = {(a, b) in
returna + b
}
let res = sum(1, 2)
print(res) int(^SumBlock) (int, int) = ^(intx, inty) {
return x + y;
};
let str = "hello world"
var str0 = str.prefix(2)//前两个
var str1 = str.suffix(2)//后两个 let index0 = str.index(str.endIndex, offsetBy: -4)
var str2 = str[index0..<str.endIndex]//后4个 let index1 = str.index(str.startIndex, offsetBy: 4)
var str3 = str[str.startIndex..<index1]//前4个
与OC的对比
NSString*str = @"hello world";
id str0 = [str substringToIndex:2];
id str1 = [str substringFromIndex:str.length-2];
id str2 = [str substringWithRange:NSMakeRange(2, 3)];
struct Animal {
let region = "中国"
var name: String?
var color = UIColor.red init(name: String,color: UIColor) {
self.name= name
self.color= color
} struct Dog {
let legNum = 4
func run() -> String{
return"跑回家"
}
}
}
enum SDCEnumType: Int{
case circle = 20
case check func enumTypeString(type: SDCEnumType) -> String{
switch type {
case .circle:
return"circle"
default:
if type.rawValue== 21{
return"check"
} else{
return"其他情况"
}
}
} enum SDCEnumSubType {
case square(SDCEnumType)
case ellipse(SDCEnumType)
}
}
protocol Student {
var name: String{getset}
var age: Int{get}
static func study(date:Date) -> Date init(name:String)
}
extension Student{
var score:Float{
return80.8
} }
protocol Childe:Student{ }
func SwapTwoValues <T> (inout a: T,inout b :T){
let tempValue = a
a = b
b = tempValue
} structIntStack{
var items = [Int]()
//压栈
mutating func push(item:Int){
items.append(item)
}
//出栈
mutating func pop()->Int{
return items.removeLast()
}
} struct Stack<Ele>{
var items = [Ele]()
mutating func push(item:Ele){
items.append(item)
}
mutating func pop()->Ele{
return items.removeLast()
}
}
//前置运算符,表示2的var0次方
prefix operator ^
prefix func^ ( var0: Double) -> Double{
return pow(2, var0)
}
//后置运算符,表示var0的2次方
postfix operator ^
postfix func ^ (var0: Double) -> Double{
return var0*var0
}
Swift编程权威指南第2版 读后收获的更多相关文章
- Android编程权威指南第三版 第32章
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_35564145/article/de ...
- Android编程权威指南(第三版)- 2.8 挑战练习:添加后退按钮
package com.example.geoquiz; import android.support.v7.app.AppCompatActivity; import android.os.Bund ...
- 读《Android编程权威指南》
因为去年双十二购买了一折的<Android 编程权威指南(第一版)>,在第二版出来后图灵社区给我推送了第二版的优惠码,激动之余就立马下单购买电子书,不得不说Big Nerd Ranch G ...
- 使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题
Android编程权威指南(第3版)这本书是基于Android7.0的,到如今已经过于古老,最新的Android版本已经到10,而这本书的第四版目前还没有正式发售,在最近阅读这本书时,我发现这本书的部 ...
- Android编程权威指南(第2版)--第16章 使用intent拍照 挑战练习
16.7挑战练习:优化照片显示 新建dialog_photo.xml 1234567891011121314 <?xml version="1.0" encoding=&qu ...
- 《JavaScript权威指南(第6版)(中文版)》PDF
简介自1996年以来,JavaScript的:权威指南已为JavaScript圣经程序员,程序员指南和全面的参考,以核心语言和客户端JavaScript API的Web浏览器定义.第6版包括HTML5 ...
- Swift 编程风格指南(raywenderlich.com 版本号)
官方 raywenderlich.com Swift 编程风格指南 本文版权归 raywenderlich.com .The Official raywenderlich.com Swift Styl ...
- 《Android编程权威指南》CriminalIntent项目梳理
相信很多新手或者初级开发人员都已经买了第2版的<Android编程权威指南>, 这本书基于Android Studio开发,对入门人员来说是很好的选择,但是很可惜的是, 在完成一个项目后, ...
- 《JavaScript权威指南 第六版 中文版》(一)
<JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...
随机推荐
- [LeetCode 题解]: Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. For example, ...
- 'System.ValueTuple, Version=0.0.0.0 required for Add-Migration on .NET 4.6.1 Class Library
https://stackoverflow.com/questions/45978173/system-valuetuple-version-0-0-0-0-required-for-add-migr ...
- Linux使用私钥公钥(Public key)登录 - 免密码登录
为了更安全.方便的登录Linux服务器,可以取消密码登录,使用私钥公钥的方式来登录,更方便也更安全. 生成密钥 借助Xshell可以很方便的生成和管理私钥,点击工具菜单,选择新建用户密钥生成向导: 直 ...
- 小修改,让mvc的验证锦上添点花(2)
上一篇文章我们演示了通过对jquery.validate.unobtrusive.js做点小修改,如何给MVC的验证添点花 主要还是修改了onError与onSuccess中的这两个方法 这两个方法也 ...
- python获取IP位置来源
import requests import IPy def get_location(ip): url = 'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2D ...
- leetcode 2 两数相加 JAVA
题目: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示 ...
- Mysql数据操作《三》多表查询
多表连接查询 复合条件连接查询 子查询 准备表 #建表 create table department( id int, name varchar(20) ); create table employ ...
- 洛谷T46780 ZJL 的妹子序列(生成函数)
题面 传送门 题解 这居然是一道语文题? 首先不难看出,因为每一次相邻元素交换最多减少一个逆序对,所以至少\(m\)次交换就代表这个序列的逆序对个数为\(m\) 我们考虑一下,假设现在已经放完了\(i ...
- 极光开发者沙龙 JIGUANG MEETUP —— 移动应用性能优化实践
活动背景 移动互联网时代,各大互联网公司都已将自己的产品和服务全面移动化,各类新产品功能都会优先在移动 App 上尝试. 应用性能作为影响用户体验最重要的因素,在开发过程中显得尤为重要. 用户网络环境 ...
- Azure自定义角色实现RBAC
简要说明: 当前Azure Portal上只能针对订阅或具体某一资源,实现访问控制,也就是对某一具体资源实现访问/使用/删除,但无法实现创建.例如:当前的需求为,新添加用户只具有对CDN服务的管理使用 ...