Swift修飾子(final、override、discardableResult、mutating、lazy、inout......)
2049 ワード
final
//5
class finalClass{
final var applePen = 1
final func test(){
}
final class func test2(){
}
}
class finalSub: finalClass {
// final
}
// class ,
final class unDo{
}
@discardableResult
@discardableResult //
class func unUseReuslt(d x:Int) -> Bool {
mutating
// , , mutating
mutating func changeby(justA:Int,justB:Int) {
convenienceコンビニエンスストア
//3
class Food {
var name: String
init(name: String) {
self.name = name
}
//
convenience init() {
self.init(name: "[Unnamed]")
}
}
lazy
Swiftリラウド(Object-Cのリラウドは使用時に空間を開く、set getメソッド)Swiftリラウドは静的空間に相当し、一度だけ実行する....a=1を1回だけ印刷
lazy var a:Int = {
print("a = 1")
return 1
}()
var ja:Jason? = Jason(name:"Jason") //Jason
var aa = ja?.a
var aaa = ja?.a
var aa2 = ja?.a
inoutはC++の参照に相当します
func typeFunc(xx x:inout Int, yy y:inout Int) {
let value = x
x = y
y = value
}
open,public,internal,fileprivate,private
1、
private
privateアクセスレベルで修飾されたプロパティまたはメソッドは、現在のクラスでのみアクセスできます.2、fileprivate fileprivateアクセスレベルで修飾された属性またはメソッドは、現在のSwiftソースファイルにアクセスできます.
3、internal(デフォルトのアクセスレベル、internal修飾子は書くか書かないか)internalアクセスレベルで修飾された属性またはメソッドは、ソースコードが存在するモジュール全体にアクセスできます.フレームまたはライブラリコードの場合は、フレーム内全体にアクセスでき、フレームが外部コードで参照されている場合はアクセスできません.Appコードであれば、Appコード全体でもあり、App内部全体でアクセスできます.
4、publicは誰にでもアクセスできます.しかし、他のmoduleではoverrideと継承はできません.moduleではoverrideと継承ができます.
5,openはoverrideと継承を含む誰にでも使用できます.
アクセス順:現在のアクセス権限はopen,public,internal,fileprivate,privateの順です.