当前位置: 首页 > news >正文

Swift 中的函数(上)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

学习来自《极客学院:Swift中的函数》

工具:Xcode6.4 

直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会

 1 import Foundation
 2 
 3 //函数
 4 /*1.定义函数的语法格式
 5     func 函数名(形参列表) -> 返回值类型 {
 6     //可执行语句组成的函数
 7 }
 8 */
 9 //定义和调用函数
10 func sayHello(personName: String) -> String{
11     return "Hello "+personName
12 }
13 println(sayHello("HeYang"))
14 
15 //2.外部参数名 局部参数名:形参类型
16 func area(宽 width: Double,高  height: Double) -> Double
17 {
18     return width * height
19 }
20 print("面积是:")
21 println(area(宽: 3.4, 高: 4.3))
22 //但是这样比较麻烦,所以需要用#号
23 func area_1(#width: Double,#height: Double) -> Double
24 {
25     return width * height
26 }
27 print("改了之后:")
28 println(area_1(width: 34.1, height: 9.2))
29 
30 //3可变参数:在参数类型后面添加 ... 表示该参数
31 func sum(numbers: Int...) -> Int{
32     var total : Int = 0
33     for num in numbers{
34         total += num
35     }
36     return total
37 }
38 println("求和是:\(sum(1,2,3,4))")
39 //要注意的地方:一个函数只能有一个可变参数,而且可变参数只能位于最后
40 
41 //4.默认参数
42 func sayHi(msg: String,name: String = "HeYang"){
43     println("\(name),\(msg)")
44 }
45 sayHi("你好~")
46 sayHi("你好~", name: "world")
47 //不能去掉里面的 name: 也就是带有默认参数的是有外部参数名的,也就是说,默认参数相当于是在外部声明定义的。如果要忽略的话,就在默认参数前面添加下划线:unc sayHi(msg: String,_ name: String = "HeYang")不是_name而是_ name
48 
49 //如果有可变参数,也有默认参数,那么可变参数放在最后面,默认参数只能出现在次后面
50 
51 //5.常量形参 和 变量形参
52 func factorial(var number:Int) -> Int{
53     var result: Int = 1
54     while number > 1{
55         result = result*number
56         number--
57     }
58     return result
59     //变量的形参作用域在函数内部,所以形参怎么变化都是不会影响到外面的变量
60 }
61 print("形参")
62 println(factorial(4))
63 
64 //6.In-Out形参
65 func swap(inout a:Int,inout b:Int){
66     var temp = a
67     a = b
68     b = temp
69 }
70 var a = 1
71 var b = 2
72 swap(&a, &b)
73 println("交换之后,a:\(a) b:\(b)")
74 /*注意
75 1.只能传入变量作为实参
76 2.输入输出参数不能带有默认值
77 3.如果你用关键字,inout标记了一个参数,这个参数不能用var或者let去标记
78 */

运行输出结果是:

转载于:https://my.oschina.net/u/2363463/blog/635966

相关文章:

  • IOS开发中UILabel单行、多行文本计算高度、宽度的技巧
  • 盲修瞎练路漫漫,名师点化三日成[转]
  • jsp 页面和 jsp标记
  • 给包文件增加注释
  • 纯手动编译安装LAMP,   cacti , nagios , zabbix
  • Maven学习 (一) 搭建Maven环境
  • 1、绪论
  • forward内部跳转 和redirect重定向跳转的区别
  • iOS版微软自拍App上架:自然美颜 上手简单
  • JAVA - 多线程 两种方法的比较
  • elasticsearch插件安装
  • 会话状态保持,JSESSIONID,COOKIE,URL重写
  • python 的SimpleXMLRPCServer,xmlrpclib
  • issues about Facebook Login
  • 双向链表的几种实现
  • [deviceone开发]-do_Webview的基本示例
  • css系列之关于字体的事
  • HomeBrew常规使用教程
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript服务器推送技术之 WebSocket
  • js正则,这点儿就够用了
  • linux学习笔记
  • Promise面试题,控制异步流程
  • sessionStorage和localStorage
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue脚手架vue-cli
  • Vue--数据传输
  • 当SetTimeout遇到了字符串
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 码农张的Bug人生 - 见面之礼
  • 如何解决微信端直接跳WAP端
  • 微服务框架lagom
  • 用element的upload组件实现多图片上传和压缩
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #Linux(帮助手册)
  • #Ubuntu(修改root信息)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (转)LINQ之路
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • @Bean, @Component, @Configuration简析
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @PreAuthorize注解
  • @RequestBody与@ResponseBody的使用
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BUG]vscode插件live server无法自动打开浏览器
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C++] 统计程序耗时
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】