Swift 中的基础语法(二)
1.Swift 中的函数
/// 函数的定义
///
/// - Parameters:
/// - x: 形参
/// - y: 形参
/// - Returns: 返回值
func sum(x: Int, y: Int) -> Int {
return x + y
}
print(sum(x: 10, y: 20))
/*
外部参数就是在形参前面加了一个字
外部参数不会影响函数内部的细节
外部参数会让外部调用看起来更加直观
外部参数如果使用了'_',在外部调用函数时,会忽略形参的名字
"_" 就是可以忽略任意不感兴趣的内容
*/
func sum1(num1 x: Int, num2 y:Int) -> Int { return x + y;
}
print(sum1(num1: 10, num2: 20))
func sum2(_ x: Int, _ y:Int) -> Int {
return x + y;
}
print(sum3())
设置默认值的函数
// 默认值
func sum3(x: Int = , y: Int = ) -> Int {
return x + y
}
这里比较灵活
print(sum3(x: 10, y: 20))
print(sum3(x: 10))
print(sum3(y: 20))
无返回值的函数
func demo1() {
print("哈哈")
} func demo2() -> (){
print("呵呵")
} func demo3() -> Void {
print("嘻嘻")
}
demo1()
demo2()
demo3()
2.闭包
// 1.闭包,最简单的闭包
//n 如果没有参数,没有返回值 可以省略 连 in 都一起省略
// option + click
let b1 = {
print("hello")
}
b1()
// 带参数的闭包
//闭包中,参数,返回值 实现的代码都是写在{}中
// 需要使用一个关键字 “in” 分隔定义和实现
// {形参列表 -> 返回值类型 in // 实现代码}
let b2 = {
(x: Int) -> () in
print(x)
} b2()
//带参数 带会返回值的闭包
let b3 = {
(x: Int) -> Int in return x +
}
print(b3())
需要注意的是,
// 如果函数的最后一个参数是闭包 函数参数可以提前结束,最后一个参数直接使用{}包装闭包的代码
3.swift 解决循环引用的办法
1.仿照OC 解决
//弱引用的对象 又一次执行 nil的机会
weak var weakSelf = self
loadData { (result) in
print(result,weakSelf)
}
}
//[weak self] 和 __weak typeof(self) 作用类似 -> 对象被回收是 内存地址会自动指向nil 更加安全 推荐使用这种方式
func methodInSwift1() {
loadData { [weak self] (result) in
print(result,self)
}
}
// [unowned self] 和 __unsafe__retained作用类似 -> 对象被回收是 内存地址不会自动指向nil 会造成野指针访问 func methodInSwift2() { loadData { [unowned self] (result) in
print(result,self)
}
}
Swift 中的基础语法(二)的更多相关文章
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- JSP开发中的基础语法
JSP 语法 JSP开发中的基础语法. 脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式: <% 代码片段 %> 或者 ...
- swift第一季基础语法
同: 一.基础 同: 1常量和变量 2数据类型和数据类型转换 3别名 不同: 1可选类型optional 2BOOL类型 3元组类型 4断言Assertion 二.基本操作符 同: 1赋值和算术运算及 ...
- 从零开始学 Web 之 ES6(四)ES6基础语法二
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...
- Linux入门第五天——shell脚本入门(中)基础语法之判断与条件
一.判断式 利用 test 命令进行执行结果的判断(例如判断是否存在该文件):关于test test:test 示例:结合回传值 $? 进行判断:关于$?:$? [root@localhost tm ...
- Python 1基础语法二(标识符、关键字、变量和字符串)
一.标识符 标识符就是程序员自己命名的变量名.名字需要有见名知义的效果,不要随意起名 :比如 a=1 a是个变量,a这个变量名属于标识符 1 company = '小米 2 employeeNum = ...
- python基础语法(二)
本文主要包括以下内容 函数 切片 迭代 列表生成式 生成器 迭代器 函数 定义函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块 ...
随机推荐
- EditText设置光标位置问题
普通设置 EditText 光标显示位置的方法就是 et.setSelection(text.length()); et.setSelection(0); 设置0 就是第一位了. 设置text长度就最 ...
- debug找到source lookup path以及,debug跑到另外的解决办法
在我们使用eclipse调试的时候,有时候会出一些奇葩的问题,比如找不到Source lookup path, 这时我们可以点击Edit Source Lookup Path.接着回弹出一个 我们只 ...
- 在ubuntu18.0下安装qt4.7以及qt-creator安装过程中遇到的坑
最近的嵌入式Linux系统上要做课程设计= =要用贼老贼老的qt4.7,配环境踩坑都费了我1天时间.....所以记录下来,希望能给和我遇到相同问题的朋友一点帮助 apt-get install g++ ...
- Lightoj 1024 - Eid
求n个数的最小公倍数. import java.math.*; import java.io.*; import java.util.*; import java.text.*; public cla ...
- YTU 2586: 填空题B-字画鉴别
2586: 填空题B-字画鉴别 时间限制: 1 Sec 内存限制: 128 MB 提交: 509 解决: 131 题目描述 注:本题只需要提交填写部分的代码,请按照C语言方式提交. 古玩店老板小勇 ...
- android 代码优化:关闭输出日志
android关闭日志 我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(), ...
- Robotframework之Run Keyword And Return Status和Run Keyword
今天在android项目中遇到一个问题,场景达人每天第一次接单时,会弹出提示框:每日完成订单配送后将扣取1元保险费,是否确认接单?,点击确定后,才能接单成功,并且只有每天第一次接单才会弹出 如下图 此 ...
- hdu 3333(树状数组 + 离线操作)
Turing Tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- css3 混合模式mix-blend-mode background-blend-mode 以及混合模式的隔断 isolation
css 混合模式 mix-blend-mode: 让 元素内容 和 这个元素 以及 下面的元素 发生混合 background-blend-mode 背景的混合模式 可以是背景图片的混合也可以是背景图 ...
- 异常备忘:java.lang.UnsupportedClassVersionError: Bad version number in .class file
转自:https://blog.csdn.net/myyugioh/article/details/7724915 今天在导入一个工程时,编译并打包到Tomcat后,发现出现java.lang.Uns ...