swift 用在声明中的关键字

Posted 妖妖yaoyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 用在声明中的关键字相关的知识,希望对你有一定的参考价值。

  1 ///////////////用在声明中的关键字/////////////////
  2 
  3 //1.class声明一个类
  4 public class  aClass {
  5     //.class声明一个类函数
  6     public  class func test(let num:Int) ->Void{
  7        
  8     }
  9 }
 10 
 11 //2.deinit反初始化
 12  deinit{}
 13 
 14 
 15 //3.枚举
 16 public enum UIButtonType : Int {
 17     
 18     case Custom // no button type
 19     @available(ios 7.0, *)//适用于iOS7.0以上,任何平台
 20     case System // standard system button
 21     
 22     case DetailDisclosure
 23     case InfoLight
 24     case InfoDark
 25     case ContactAdd
 26     
 27     public static var RoundedRect: UIButtonType { get } // Deprecated, use UIButtonTypeSystem instead
 28 }
 29 
 30 
 31 //4.extension(扩展 String类)
 32 extension String {
 33     public typealias Index = String.CharacterView.Index
 34     public var startIndex: Index { get }
 35     public var endIndex: Index { get }
 36     public subscript (i: Index) -> Character { get }
 37 }
 38 
 39 //5.func 函数声明
 40  func test(let num:Int) ->Void{}
 41 
 42 //6.import 导入框架或者类
 43 import Foundation
 44 import UIKit
 45 
 46 //7.1 init构造器函数
 47 
 48 // Initializers for creating colors
 49 public init(white: CGFloat, alpha: CGFloat)
 50 public init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat)
 51 
 52 //7.2 convenience便利构造器,主要是对一些变量做一些默认值的设置
 53 public convenience init(color: UIColor)
 54 
 55 //8.let 声明一个常量   var 声明一个变量
 56 
 57 //9.protocol 协议
 58 public protocol NSObjectProtocol {
 59     
 60     public func isEqual(object: AnyObject?) -> Bool
 61     public var hash: Int { get }
 62     
 63     public var superclass: AnyClass? { get }
 64     
 65     public func `self`() -> Self
 66     
 67     public func performSelector(aSelector: Selector) -> Unmanaged<AnyObject>!
 68     public func performSelector(aSelector: Selector, withObject object: AnyObject!) -> Unmanaged<AnyObject>!
 69     public func performSelector(aSelector: Selector, withObject object1: AnyObject!, withObject object2: AnyObject!) -> Unmanaged<AnyObject>!
 70     
 71     public func isProxy() -> Bool
 72     
 73     public func isKindOfClass(aClass: AnyClass) -> Bool
 74     public func isMemberOfClass(aClass: AnyClass) -> Bool
 75     @available(iOS 2.0, *)
 76     public func conformsToProtocol(aProtocol: Protocol) -> Bool
 77     
 78     public func respondsToSelector(aSelector: Selector) -> Bool
 79     
 80     public var description: String { get }
 81     
 82     optional public var debugDescription: String { get }
 83 }
 84 
 85 //10.1 static 静态变量
 86 
 87 
 88 //10.2 static 静态函数(在enum和struct中)
 89        class 静态函数(在类和协议中)
 90 
 91/*在非class的类型上下文中,我们统一使用static来描述类型作用域。包括在enum和struct中表述类型方法和类型属性时。在这两个值类型中,我们可以在类型范围内声明并使用存储属性,计算属性和方法。
 92class关键字相比起来就明白许多,是专门用在class类型的上下文中的,可以用来修饰类方法以及类的计算属性。要特别注意class中现在是不能出现存储属性的
93有一个比较特殊的是protocol。在Swift中class、struct和enum都是可以实现protocol的。那么如果我们想在protocol里定义一个类型域上的方法或者计算属性的话,应该用哪个关键字呢?答案是使用class进行定义,但是在实现时还是按上面的规则:在class里使用class关键字,而在struct或enum中仍然使用static——虽然在protocol中定义时使用的是class: 94 */ 95 struct Point { 96 let x: Double 97 let y: Double 98 // 存储属性 99 static let zero = Point(x: 0, y: 0) 100 // 计算属性 101 static var ones: [Point] { 102 return [Point(x: 1, y: 1), 103 Point(x: -1, y: 1), 104 Point(x: 1, y: -1), 105 Point(x: -1, y: -1)] 106 } 107 // 类型方法 108 static func add(p1: Point, p2: Point) -> Point { 109 return Point(x: p1.x + p2.x, y: p1.y + p2.y) 110 } 111 } 112 113 protocol MyProtocol { 114 class func foo() -> String 115 } 116 struct MyStruct: MyProtocol { 117 static func foo() -> String { 118 return "MyStruct" 119 } 120 } 121 enum MyEnum: MyProtocol { 122 static func foo() -> String { 123 return "MyEnum" 124 } 125 } 126 class MyClass: MyProtocol { 127 class func foo() -> String { 128 return "MyClass" 129 } 130 } 131 132 //11.新类 SomeClaa
新结构体 SomeStruct
133 // 变量 someProperty 134 // 方法 someFunction 135 class SomeClass{ 136 } 137 138 struct SomeStruct { 139 140 } 141 142 enum SomeEnumeration{ 143 144 } 145 146 protocol SomeProtocol{ 147 148 149 } 150 //要使类遵守某个协议,需要在类型后面加上协议名称,中间以冒号:分隔,作为类型定义的一部分。遵守多个协议时,各个协议之间用逗号,分隔。 151 struct SomeStruct: FirstProtocol,AnotherProtocol{ 152 properties and methods 153 } 154 //如果类在遵守协议的同时拥有父类,应该将父类放在协议名前,以逗号分隔 155 class SomeClass : SuperClass,FirstProtocol,AnotherProtocol{ 156 <#properties and methods#> 157 }

 

以上是关于swift 用在声明中的关键字的主要内容,如果未能解决你的问题,请参考以下文章

静态与类作为类变量/方法(Swift)

throw 和 throws 的区别是什么?

为啥 Java 变量不更频繁地声明为“final”?与 swift 中的 let 关键字进行比较 [关闭]

java中的关键字

static 和 class

Swift(08)- 函数