今天还是重复昨天做的事情--敲代码,但唯一的不同就是所学的知识不同了,我们又进一步往深得层次学习了,感觉越来越有意思了,虽然临近结束了看着大家积极性越来越低了,但是我知道我不能这样,我要比别人付出的更多,更加的踏实才行,因为我知道我的基础不如别人,目标和动力也和他们不同,看着大家有的说是只要找到工作就好,还有的说只要每个月够花就好,担着真的是大家来这里学习的最终目的吗,如果是这样,真的还不如随便找个工作将就一下,也比这个整天做到这好多了,还交了那么贵得费用,所以何必呢,既然选择了这条路,既然当初抱着那么的憧憬,那么大的希望来到这里,走上这条路,那么我们就要坚定不移的走下去,美好的明天只有自己可以创造,也只有自己能够为自己负责,世界上没有卖后悔药,如果等到结局已经落定再去后悔,哪还有什么用,所以在这里望毅然选择程序道路的朋友们(不管是iOS,.Net,JAVA....)还是什么,都不要轻言放弃,要学会对自己负责,对关心在乎你的人负责,现在我想对自己和关心我的人说:加油加油!!!!!!

   今天就来为大家讲解下我们今天所学习的知识点,以及我自学的部分知识,希望可以和大家共同进步,共同努力,下面就来附上代码供大家参考,学习提意见等:

   一、函数的学习

  1.函数结构

   在Swift语言中,函数的基本结构是这样的,具体结构如下:

   函数

   func 函数名(参数列表)->(返回值类型) {

                          执行的代码块

} 

   2.函数的基本示例

func sayHello(name: String) -> (String) {
return "Hello" + name
} func sayByeBye(name:String, name1: String) -> (String) {
return "WoJiao " + name + name1
}

   以上函数名为sayHello (name:String, name1:String)对应的是参数列表, (String)指的是函数的返回值类型,大括号内部的便是函数要执行的代码块了,相信大家看到后会对函数有个最最初步的了解了吧,下面再为大家附上今天所作的小小练习了

var letter = "aeibcd1234"
func getNumbers (letter: String) -> (Int, Int, Int) {
var count : Int =
var count1 : Int =
var count2 : Int =
for oneChar in letter {
// var str = String(oneChar).lowercaseString
switch oneChar {
case "a", "i", "b":
count++;
case "e", "c", "d":
count1++;
default:
count2++;
}
}
return (count, count1, count2)
}
getNumbers(letter)      

   首先需要定义字符串,(很明显这些都和OC及UI中的不同)var letter = "aeibcd1234", 接下来定义三个整形的数用来计数,相信下面的switch,case大家都可以看懂的吧,这就是简单地分支结构了,我通过这个来判断内部有多少个'a','i','b'和'e','c','d'以及多少个数字了通过每进一次count(count1,count2)自加来表示,同时,在说明下,我注释掉的那一句是用来进行大小写转换的,如果所定义的字符串内部有字符串的话我们可以通过这个方法让其变为小写,以便我们后面对其进行计数处理,好了这个简单地函数就到这里了,如果有哪里不对了或者哪里不懂了都可以提出来哦,嘿嘿。

  3.外部参数的使用

   有些时候我们需要引入一个外部参数来实现我们的需求,但是需要注意的是,尽管有时间使用外部参数会使我们所编写的程序看起来很炫,但是外部参数是不可以在函数内部进行使用的,就比如我们要平常所写的就是类似下面的做法,如图所示:

但是有时间你会发现我们在手机中碰到的或者所见源码中会有和上面不一样的实例,就比如:

   接下来下伙伴门肯定会有疑问吧(知道的要低调哈)那么我就来慢慢为大家解释下把,其实实现起来并不是太难,只需要一行代码就可以搞定了,总共方案有三种吧,下面就一一为大家附上代码供大家参考吧!

     现附上源码作为对比

func personInfou( personName: String, sex: String,  age:String) -> String {
return personName + " " + sex + age
}

   方案一:

func personInfou(name personName: String, sex sex: String, age age:String) -> String {
return personName + " " + sex + age
}

就是在每个参数前加上一个外部参数名,想必大家经过对比都可以看出来的。

   方案二:

func personInfou(#personName: String, #sex: String, #age:String) -> String {
return personName + " " + sex + age
}

   方案三:

func personInfou(name personName: String, #sex: String, age:String = "") -> String {
return personName + " " + sex + age
}

以上就是实现的三种方法,是不是很神奇呢,说实在的,以前我也不知道可以这样写,不过现在算是知道了,可以说是get了一个新技能。

   4.函数的嵌套

   不过说真的,函数的嵌套和C语言的函数回调十分相似,不过由于在Swift中不存在.h文件和.m文件之分,所以为了保证文件源码的安全性,开发者做出了一下的调整,那就是将嵌套的函数体写在同一个函数内部,也可以说是充当了代码块来实现的,下面就为大家展示下Swift中的函数嵌套:

//函数类型作为返回值
// 隐藏 不希望别人看到
func changeValue (isOne: Bool) -> Int -> Int {
func plusOne(number: Int) -> Int {
return number + ;
}
func plusTwo(number: Int) -> Int {
return number - ;
}
return isOne ? plusOne : plusTwo
}
var cc : Int -> Int = changeValue(true)
cc()

   在以上代码中,参数列表为(isOne:Bool)他是一个Bool类型的,通过下面的return isOne ? plusOne : plusTwo来进行函数的回调,如果传参为真,则开始回调一地个函数,反之回调第二个, 在下面最后一行进行函数的调用,var cc : Int -> Int = changeValue(true)传入一个true时通过return返回一个函数体,即为plusOne然后在对函数cc加以调用,传入参数20,来执行函数,这便是函数的简单嵌套,至于复杂的本博客将不断更新,敬请期待。

   二、Swift中闭包的简单学习

  1.闭包的简单结构

   {

           (参数列表)->返回值 in

      闭包的实现

   }

   其实Swift中闭包跟OC中的block类似,下面就为大家附上闭包的简单应用,不要错过哦,逐层加深哦,嘿嘿。

  (1)第一种实现方式  

var names = ["Qiaoming", "kan", "taobao"]
var sortedNames1: () = sort(&names, {
(stringA: String, stringB: String) ->Bool in
return stringA < stringB
}) names

    第一种其实没有什么好说的,只是套用结构而已,不过下面博友门就要看清楚了,是紧密联系的,一一演变而来的。

    (2)第二种实现方式   

var sortedNames2:() = sort(&names, {
(stringA, stringB) -> Bool in
return stringA < stringB
})
names

在这里去掉类型让系统去自行推断出stringA,stringB的类型,相比上一种是不是感动有少许的简单快捷呢,不过不要大意哈,下面的终极版马上就要来了。

     (3)第三种实现方式   

var sortedName3: () =  sort(&names,{
return $ > $
})

是不是看上去更简单了,这里用$0来表示第一个参数 $1来表示第二个参数。

   (4)第四种实现方式

var sortedName4:() = sort(&names, >)
names

这便是第四种的实现方式,慢慢的看着似乎脱离了block,但是只用一句话就可以实现我们前面的需求了(就是对一个数组进行排序),需要说明的是这些都是又限制的,在Swift语言中,由于数组中存放的必须是同一种数据类型,所以参数类型可以省略不写,还有每个方法中的names只是为了用来验证是不是满足我们的需求,其实可以完全不用写的,当然是在我们写的比较多的时候。

    三、类 跟 结构体

    1.相同点

    (1)都可以定义属性 (2)都可以定义方法 (3)他们都可以定义便利构造器(初始化方法) (4)都可以遵循协议 (5)都可以被扩展

    2.不同点

     (1)类 可以被继承, 而结构体就不能 (2)类 可以被类型推断  (3)类 可以通过析构(即dealloc)释放内存  (4)类 它是引用类型 结构体是值类型

    以上就是我们今天所学习的只是点了,虽然不多,但是确实是新知识,感觉也挺有用的,毕竟是刚出来的,总有一天会派上用处的,所以还是要争取把它学好。下面的是附赠品哦(自己通过课余时间来学习了用Swift如何创建简单控件),下面就为大家附上代码,供大家参考研究:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
// Override point for customization after application launch.
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
//lebel的创建
let textLabel = UILabel(frame: CGRectMake(self.window!.frame.size.width / - , , , ))
textLabel.text = ""
textLabel.backgroundColor = UIColor(red:0.5,green:0.5,blue:0.5,alpha:1.0)
textLabel.textColor = UIColor(red:0.5,green:0.2,blue:0.6,alpha:1.0)
textLabel.textAlignment = NSTextAlignment.Center
self.window!.addSubview(textLabel) //UIImageView的创建及添加图片
let imageView = UIImageView(frame: CGRectMake(self.window!.frame.size.width / - , , , ))
imageView.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0) let image = UIImage(named: "1.png")
imageView.image = image
self.window!.addSubview(imageView) return true

    相信大家通过看这些肯定会看出来和UI中的创建方法完全不同,并且会感觉到不太上手,不过确实是这样的,当我这样写的时候自己都感觉不太对,也有点不可思议,竟然是这样写的,不过最终还是出来了,感到非常高兴,希望这些可以帮到大家,如果对简单控件的创建还有什么疑问的话,欢迎前来与我商讨,顺便说下,这个是在空模板中写的,语言不再试以前选择的OC了,而要改写为Swift了,哈哈。

     好了,今天就先写到这里了,感觉虽然东西不是很多,但还是需要慢慢消化的,毕竟是刚接触的,最后还是要重复我刚开始说的话,选择了这条路的亲朋好友们,还有你你你, 我们共同努力,一起揭开属于我们美好的明天,坚持就是胜利,更何况几个月已经走过来了,剩下的难道我们还会怕吗,加油加油喽,come on!

Swift学习之函数和简单地控件的创建的更多相关文章

  1. Swift 学习笔记 (函数)

    函数 函数是一个独立的代码块,用来执行特定的任务.Swift中的函数与Object-C中的函数一样,但是声明与书写的方式不太一样,现在我们就通过几个例子介绍一下Swift中的函数.简单的来说,他与JS ...

  2. Ext入门学习系列(五)表格控件(1)

    上节学习了Ext面板控件,为后面的各个控件学习奠定基础,在此基础上本章将学习网络开发最期待的功能——表格控件. 我们都知道网络编程语言中,除了.net其他的基本没有提供网格控件,而最近的asp.net ...

  3. Win32编程点滴3 - 简单ActiveX控件的使用

    虽然这里一片的.net气氛,到处充斥着像MVC.WPF.WorkFlow.LINQ等各种niubility的术语.但我们使用的Windows还是由COM技术主宰着:我们在选择日常使用的软件时,也会避免 ...

  4. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  5. ASP.NET自定义控件组件开发 第一章 第一章:从一个简单的控件谈起

    第一章:从一个简单的控件谈起 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第三 ...

  6. Flutter学习指南:UI布局和控件

    Flutter学习指南:UI布局和控件 - IT程序猿  https://www.itcodemonkey.com/article/11041.html

  7. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

  8. UWP入门(八)--几个简单的控件

    原文:UWP入门(八)--几个简单的控件 每天看几个,要不聊几天我就可以看完啦,加油! 看效果 1. CheckBox <TextBlock Grid.Row="0" Tex ...

  9. Jetpack Compose学习(9)——Compose中的列表控件(LazyRow和LazyColumn)

    原文:Jetpack Compose学习(9)--Compose中的列表控件(LazyRow和LazyColumn) - Stars-One的杂货小窝 经过前面的学习,大致上已掌握了compose的基 ...

随机推荐

  1. IPMI 配置BMC用户设置

    IPMI 配置BMC用户设置 本文档共介绍5条ipmi设置user的命令,这些命令需要使用root权限才能使用,其中- H为需要操作的BMC ip,-I lanplus为使用rmcp+协议发送命令,- ...

  2. C# XML 根级别上的数据无效

    XmlDocument加载xml方法 XmlDocument doc = new XmlDocument(); //加载xml 字符串 doc.LoadXml(_Store); //加载xml文件 d ...

  3. (三)backbone - API学习 - v0.9.2 与 v1.1.2区别

    Backbone.View v0.9.2 中Backbone.View 可以导出对象的options属性, v1.1.2 中去掉该属性,通过如下代码 viewOptions = ['model', ' ...

  4. jQuery和DOM对象

    html示例 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...

  5. HDU 5903 - Square Distance [ DP ] ( BestCoder Round #87 1002 )

    题意: 给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s, 要求字典序最小的答案    分析: 把字符串折半,分成0 - n/2-1 和 n/2 - n-1 d ...

  6. poj1562 DFS入门

    K - 搜索 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB     64bit I ...

  7. (原)10-folder交叉验证

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6069731.html 参考网址: https://github.com/cmusatyalab/ope ...

  8. phpwind 去除init.phpwind.net统计功能

    修改的文件如下:global.phplib/staticpage.class.phprequire/template.phpsimple/index.php

  9. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  10. 挖掘机控制器与复制其MCU程序

    最近的时间都浪费在两台小松PW128UU-1上面.旧的一台拆了变速箱,装上去以后就变得换挡不行了.新的一台一直都不行,弄过液压泵以后下部分的行走又出现一时正常一时不动的情况. 先说说概况:PW128U ...