zoukankan      html  css  js  c++  java
  • 初学swift笔记 方法(九)

      1 import Foundation
      2 /*
      3 方法
      4 */
      5 //实例方法 一定需要依附于对象
      6 
      7 class MyPoint {
      8     var x: Double = 0.0
      9     var y: Double = 0.0
     10     //类中的内部方法 第一个参数默认没有外部参数名,从第二个以后开始,方法名作为外部参数名 既作为内部参数又做为外部参数
     11     //实例方法
     12     func set(_x: Double,_y: Double) {
     13         x = _x
     14         y = _y
     15     }
     16     //实例方法
     17     func show() {
     18         println("x:(x) y(y)")
     19     }
     20 }
     21 func set(_x: Double,_y: Double) {
     22     
     23 }
     24 
     25 var p0 = MyPoint()
     26 p0.set(10, _y: 7)
     27 p0.show()
     28 set(10, 10)
     29 
     30 
     31 //结构体中的mutating方法
     32 struct MyPoint_1 {
     33     var x : Double = 0
     34     var y : Double = 0
     35     //结构体和枚举 值类型不可以直接修改其内的变量值,如果要修改,需要在方法前加关键字 mutating
     36     mutating func set(x : Double,y : Double) {
     37         self.x = x
     38         self.y = y
     39         
     40     }
     41     func show() {
     42         println("x:(self.x) y:(self.y) ")
     43     }
     44     
     45 }
     46 //枚举中可以写方法,但枚举中不能有存储属性,可以有计算属性
     47 enum LightSwitch {
     48     case OFF,ON,HIGH
     49     mutating func next() {
     50         switch self {
     51         case .OFF:
     52             self = ON
     53         case .ON:
     54             self = OFF
     55         case .HIGH:
     56             self = OFF
     57             
     58         }
     59     }
     60     
     61 }
     62 var p1 = MyPoint_1()
     63 p1.show()
     64 
     65 var light = LightSwitch.OFF
     66 println(light.hashValue)
     67 light.next()
     68 println(light.hashValue)
     69 
     70 /*
     71 类型方法 静态方法
     72 通过类名+方法名来调用
     73 与static静态方法相似,该方法为所有对象共用
     74 */
     75 struct MyPoint_2 {
     76     var p: Int = 0
     77     static var sp: Int = 0
     78     func getvalue() {
     79         println("p:(p) sp:(MyPoint_2.sp)")
     80     }
     81     //静态方法不能够访问非静态变量
     82     static func static_getvalue() {
     83         // println("p:(p) sp:(MyPoint_2.sp)")
     84         println("sp:(MyPoint_2.sp)")
     85 
     86     }
     87     
     88 }
     89 struct MyPoint_3 {
     90     var p: Int = 0
     91     static var sp: Int = 0
     92     func getvalue() {
     93         println("p:(p) sp:(MyPoint_3.sp)")
     94     }
     95     //静态方法不能够访问非静态变量
     96     static func static_getvalue() {
     97         // println("p:(p) sp:(MyPoint_3.sp)")
     98         println("sp:(MyPoint_3.sp)")
     99         
    100     }
    101     
    102 }
    103 var m2 = MyPoint_2()
    104 m2.getvalue()
    105 MyPoint_2.static_getvalue()
    106 
    107 var m3 = MyPoint_3()
    108 m3.getvalue()
    109 MyPoint_3.static_getvalue()
    110 
    111 /*
    112 subscripts 下标 访问对象中数据的快捷方式
    113 实例[索引值]
    114 */
    115 let array = [1,2,3,4,5,6,7]
    116 println(array[0]) //实例对象[索引]
    117 
    118 struct student {
    119     var name : String = ""
    120     var math : Int
    121     var english : Int
    122     var chinese : Int
    123     func scoreOf(course : String) -> Int? {
    124         switch course {
    125             case "math":
    126             return math
    127             case "chinese":
    128             return chinese
    129             case "english":
    130             return english
    131         default:
    132             return nil
    133         }
    134     }
    135     //制作下标方法
    136     /*
    137     subscript (course : String) -> Int? {
    138         switch course {
    139         case "math":
    140             return math
    141         case "chinese":
    142             return chinese
    143         case "english":
    144             return english
    145         default:
    146             return nil
    147         }
    148     }
    149     */
    150     //或者这么写
    151     subscript (course : String) -> Int? {
    152     get{
    153         switch course {
    154         case "math":
    155             return math
    156         case "chinese":
    157             return chinese
    158         case "english":
    159             return english
    160         default:
    161             return nil
    162         }
    163     }
    164         set{
    165             switch course {
    166             case "math":
    167                  math = newValue!
    168             case "chinese":
    169                  chinese = newValue!
    170             case "english":
    171                  english = newValue!
    172             default:
    173                  println("set error")
    174             }
    175         }
    176     }
    177 
    178 }
    179 var li = student(name: "lisi", math: 90, english: 80, chinese: 98)
    180 println(li.scoreOf("math"))
    181 println(li["math"])//下标访问
    182 li["math"] = 100 //下标赋值
    183 println(li["math"])//下标访问
    184 
    185 //下标多索引
    186 struct Mul {
    187     subscript (a: Int,b: Int) -> Int {
    188         return a*b
    189     }
    190 }
    191 var mul = Mul()
    192 println(mul[3,6])
     
  • 相关阅读:
    [转载]Linux下mail使用技巧
    VTK Online教程大全
    拓扑结构与TopoDS
    三维视图变换与相机模型
    说说DoDataExchange(CDataExchange* pDX)
    Lua Lib在VC下的编译
    建立最简单的OpenCASCADE程序
    构建通用类型 继承 VS 聚合
    【软件】新瓶装老酒 MyCapture
    用std::find查找文件流中的内容
  • 原文地址:https://www.cnblogs.com/lsqandzy/p/4912808.html
Copyright © 2011-2022 走看看