zoukankan      html  css  js  c++  java
  • Swift面向对象基础(中)——Swift中的方法

    学习来自《极客学院》

    1、定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数

    2、方法要么属于该类型本身,要么是该类型的一个实例

    3、不能独立执行方法,执行方法必须使用类型或实例作为调用者

    注意:枚举、结构体中方法使用static修饰,类中用class修饰,都属于类型方法,否则的话属于实例方法

     1 import Foundation
     2 
     3 class SomeClass{
     4     func test(){
     5         println("====test 方法 ======")
     6     }
     7     class func bar(#msg:String){
     8         println("====bar 方法 ======,传入的参数为:(msg)")
     9     }
    10 }
    11 //创建实例
    12 var sc = SomeClass()
    13 //将sc的test方法分离成函数,前面类型用()->()表示函数类型,后面的取方法不能带上()
    14 var f1:()->() = sc.test//如果带上括号就是调用实例的方法
    15 //将sc的bar方法分离成函数
    16 var f2:(String)->Void = SomeClass.bar
    17 
    18 //然后使用f1()就相当于调用的就是sc.test()
    19 f1()
    20 //然后使用f2()就相当于调用的就是SomeClass.bar(msg:)
    21 f2("hello")
    22 
    23 
    24 //************方法的外部形参名*************//
    25 class Person{
    26     var name:String
    27     init(name:String){
    28         self.name = name
    29     }
    30     func eat(food:String, _ drink:String ,cigarette:String){
    31         println("(self.name)吃着(food)喝着(drink)抽着(cigarette)")
    32     }
    33 }
    34 var p = Person(name: "Tom")
    35 p.eat("烤鸭", "啤酒", cigarette: "雪茄")
    36 /*Swift默认为除第一个参数外部添加了外部参数名,与局部参数名一样,如果不需要的话,则用_下划线的方式去掉,添加了外部参数名,不是添加了#号*/
    37 
    38 /************值类型的可变方法*************/
    39 struct JKRect {
    40     var x:Int
    41     var y:Int
    42     var Int
    43     var height:Int
    44     mutating func moveByX(x:Int,y:Int){
    45         self.x += x
    46         self.y += y
    47     }
    48 }
    49 var rect = JKRect(x: 20, y: 12,  200, height: 300)
    50 rect.moveByX(100, y: 90)
    51 println("矩形的左上角的x坐标为:(rect.x),y坐标为(rect.y)")
    52 /*注意:常量类型的结构体,枚举时不可变的*/

    运行结果是:

  • 相关阅读:
    LG5283 异或粽子
    LG2216 理想的正方形
    LG1484 种树
    洛谷3721 HNOI2017单旋(LCT+set+思维)
    洛谷3348 大森林 (LCT + 虚点 + 树上差分)
    CF1082E Increasing Frequency (multiset+乱搞+贪心)
    CF1082G Petya and Graph(最小割,最大权闭合子图)
    cf1082D Maximum Diameter Graph(构造+模拟+细节)
    洛谷3320 SDOI2015寻宝游戏(set+dfs序)(反向迭代器的注意事项!)
    CF613D Kingdom and its Cities(虚树+贪心)
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4651563.html
Copyright © 2011-2022 走看看