Swift面向对象基础(中)——Swift中的方法
学习来自《极客学院》
1、定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数
2、方法要么属于该类型本身,要么是该类型的一个实例
3、不能独立执行方法,执行方法必须使用类型或实例作为调用者
注意:枚举、结构体中方法使用static修饰,类中用class修饰,都属于类型方法,否则的话属于实例方法
import Foundation
class SomeClass{
func test(){
println("====test 方法 ======")
}
class func bar(#msg:String){
println("====bar 方法 ======,传入的参数为:\(msg)")
}
}
//创建实例
var sc = SomeClass()
//将sc的test方法分离成函数,前面类型用()->()表示函数类型,后面的取方法不能带上()
var f1:()->() = sc.test//如果带上括号就是调用实例的方法
//将sc的bar方法分离成函数
var f2:(String)->Void = SomeClass.bar
//然后使用f1()就相当于调用的就是sc.test()
f1()
//然后使用f2()就相当于调用的就是SomeClass.bar(msg:)
f2("hello")
//************方法的外部形参名*************//
class Person{
var name:String
init(name:String){
self.name = name
}
func eat(food:String, _ drink:String ,cigarette:String){
println("\(self.name)吃着\(food)喝着\(drink)抽着\(cigarette)")
}
}
var p = Person(name: "Tom")
p.eat("烤鸭", "啤酒", cigarette: "雪茄")
/*Swift默认为除第一个参数外部添加了外部参数名,与局部参数名一样,如果不需要的话,则用_下划线的方式去掉,添加了外部参数名,不是添加了#号*/
/************值类型的可变方法*************/
struct JKRect {
var x:Int
var y:Int
var width:Int
var height:Int
mutating func moveByX(x:Int,y:Int){
self.x += x
self.y += y
}
}
var rect = JKRect(x: , y: , width: , height: )
rect.moveByX(, y: )
println("矩形的左上角的x坐标为:\(rect.x),y坐标为\(rect.y)")
/*注意:常量类型的结构体,枚举时不可变的*/
运行结果是:

Swift面向对象基础(中)——Swift中的方法的更多相关文章
- Swift面向对象基础(上)——Swift中的类和结构体(上)
学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...
- Swift面向对象基础(上)——Swift中的枚举
Swift中枚举 学习笔记来自<极客学院> import Foundation /**********1*Swift定义枚举的语法格式*************/ /* enum 枚举名 ...
- Swift面向对象基础(上)——Swift中的类和结构体(下)
学习来自<极客学院> import Foundation class User { var name:String var age:Int init(name:String,age:Int ...
- Swift面向对象基础(中)——Swift中的存储属性和计算属性
学习来自<极客学院> 1.存储属性:存储在类.结构体里的变量或者常量 2.分为:实例存储属性.类型存储属性 3.所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定 4.可选类型 ...
- Python 面向对象基础(类、实例、方法、属性封装)
python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...
- 在Swift中使用JavaScript的方法和技巧
本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...
- swift 学习(三)(面向对象基础)
面向对象的基本特征包括:封装,继承,多态 在swift中,类,结构,枚举都具有面向对象特性 但结构和枚举的实例不称为对象,因为结构和枚举不是彻底的面向对象类型,比如他们不能继承. 结构体 struct ...
- 《Swift Programming Language 》——Swift中怎样使用继承(Inheritance)
一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性.当一个类继承其他类时,继承类叫子类(subclass),被继承类叫超类(或父类,supercla ...
- swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析
showWebView.dataDetectorTypes = .None //swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析 其UIDataDetectorTypes属性 ...
随机推荐
- 【转载】Linux下动态共享库加载时的搜索路径详解
转载自:http://www.eefocus.com/article/09-04/71617s.html 对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while loading ...
- [转载]SharePoint 2013 解决方案中使用JavaScript
作为在SharePoint应用程序中使用JavaScript的第一步,就是要知道如何将一个写好的.js文件,引用到页面上.嗯,你可能觉得这个话题太简单了,"引用一个.js文件不就是在页面上方 ...
- LeetCode-334. Increasing Triplet Subsequence
Description: Given an unsorted array return whether an increasing subsequence of length 3 exists or ...
- [python]抽象方法
抽象方法 我的理解抽象方法就是:父类的一个方法,继承的所有子类都必须要实现这个方法,否则报错. 举例说明 class Base(object): def _method(self): raise No ...
- Hekaton是如何影响你数据库的目标恢复时间(RTO)的
这个周末我发现了SQL Server 2014里Hekaton的一个有趣副作用,很遗憾它会负面影响你数据库的目标恢复时间(Recovery Time Objective,RTO).你已知道,对于每个本 ...
- 【HTML5】Canvas 实现放大镜效果
图片放大镜 效果 在线演示 源码 原理 首先选择图片的一块区域,然后将这块区域放大,然后再绘制到原先的图片上,保证两块区域的中心点一致, 如下图所示: 初始化 <canvas id=&qu ...
- 阅读《深入理解JavaScript定时机制》
鸟哥的这篇<深入理解JavaScript定时机制>从javascript线程角度分析了setTimeout和setInterval两个定时触发器的实现原理. 看完的体验就是主要要记住两点: ...
- 关于WIndows内核自映射方案的通俗解释
在一次操作系统课程上听老师说了这么一个有意思的东西,windows的自映射方案居然达到了把4K的页目录的线性地址“藏”在4M页表里的效果,感觉甚是奇特,于是乎就想着说怎么去算.光会算之后仍旧不满足,我 ...
- 解决tomcat was unable to start within问题
这个问题可能大家都熟悉,以前碰到这个问题,重新启动一次eclipse就好了,随着我的一个项目的增大,我发现这种情况越来越多,到底是怎么回事? 出现这个情况的原因有两个,要么是你的数据库连接connec ...
- MongoDB安装说明以及MongoVUE使用
简单介绍mongoDb MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产 ...