Swift_初始化
Swift_初始化
初始化结构体
//初始化结构体
func testInitStruct() {
//结构体 类中默认方法
struct Size {
//宽
var width = 0.0
//高
var height = 0.0
}
//默认初始化 使用的是init()构造方法
var size = Size()
//结构体自带根据成员初始化结构体的功能
size = Size(width: 10, height: 10)
print(size)
struct Point {
var x = 0.0, y = 0.0
//默认初始化
init() {
}
//通过成员初始化结构体
init(x:Double, y:Double) {
self.x = x
self.y = y
}
}
//自定义初始化
var point = Point() //调用inin()方法
point = Point(x: 10, y: 10) //调用init(x: Double, y:Double)方法
print(point)
/* print
(Size #1)(width: 10.0, height: 10.0)
(Point #1)(x: 10.0, y: 10.0)
*/
}
初始化枚举
//初始化枚举
func testInitEnum() {
enum CompassPoint:String {
case North, South, East, West
init(symbol: String) {
switch symbol {
case "North":
self = .North
case "South":
self = .South
case "East":
self = .East
default:
self = .West
}
}
}
//直接取值
var compassPoint = CompassPoint.West
print(compassPoint)
//通过原始值初始化
compassPoint = CompassPoint(rawValue: "North")!
print(compassPoint)
//通过自定义的初始化方法
compassPoint = CompassPoint(symbol: "North")
print(compassPoint)
/* print
West
North
North
*/
}
初始化类
//初始化类
func testInitClass() {
class BaseClass {
var name: String? //可选属性类型 可能为String或nil
init() {
print("Food:init()")
}
convenience init(name: String) {
self.init()
self.name = name
}
//省略外部参数
convenience init(_ subName: String) {
self.init(name: subName)
}
}
class SubClass: BaseClass {
override init() {
super.init() //实现父类的init()方法
}
}
//默认初始化
var user = SubClass()
//通过属性初始化
user = SubClass(name: "XuBaoAiChiYu")
//使用init(_ name: String)初始化
user = SubClass("XuBaoAiChiYu")
// var name = ""
// name = user.name //因为name可以为nil。此处会报错,
if let name = user.name {
print(name)
}
/* print
Food:init()
Food:init()
Food:init()
XuBaoAiChiYu
*/
}
结构体初始化失败
//结构体初始化失败
func testFailableInitStruct() {
struct Animal {
let species: String
init?(species: String) {
if species.isEmpty { return nil }
self.species = species
}
}
let someCreature = Animal(species: "Giraffe")
//someCreature is of type Animal?, not Animal
if let giraffe = someCreature {
print("\(giraffe.species)")
}
/* print
Giraffe
*/
}
枚举初始化失败
//枚举初始化失败
func testFailableInitEnum() {
enum TemperatureUnit:Character {
case kelvin = "K", celsius = "C", fahrenheit = "F"
init?(symbol: Character) {
switch symbol {
case "K":
self = .kelvin
case "C":
self = .celsius
case "F":
self = .fahrenheit
default:
return nil
}
}
}
//通过自定义方法初始化
var unit = TemperatureUnit(symbol: "F")
print(unit!) //Fahrenheit
unit = TemperatureUnit(symbol: "X")
print(unit) //nil
//通过原始值初始化
unit = TemperatureUnit(rawValue: "F")
print(unit!) //Fahrenheit
unit = TemperatureUnit(rawValue: "X")
print(unit) //nil
/*
fahrenheit
nil
fahrenheit
nil
*/
}
类初始化失败
//类初始化失败
func testFailableInitClass() {
class Product {
var name: String?
init() {}
init?(name: String) {
self.name = name
if name.isEmpty {
return nil
}
}
}
//可选链操作 当bowTie为真时 执行内部代码
if let qq = Product(name: "1045214799") {
print(qq.name!)
}
/*
Optional("1045214799")
*/
}
必须初始化
//必须初始化
func testRequiredInit() {
class SomeClass {
required init() {
//子类要调用此方法,必须继承实现
}
}
class SomeSubclass: SomeClass {
required init() {
}
init(required:String) {
super.init()
//这里调用父类的init()方法 当前类必须实现init()方法
}
}
}
使用闭包或函数设置默认属性
//使用闭包或函数设置默认属性
func testSettingDefaultPropertyValueWithClosureOrFunction() {
class SomeClass {
let someProperty: String = {
//create a default value for someProperty inside this closure
//someValue must be of the same type as SomeType
return "someValue"
}()
}
let c = SomeClass()
print(c.someProperty)
/* print
someValue
*/
}
Swift_初始化的更多相关文章
- swift_初始化器的使用
//: Playground - noun: a place where people can play import Cocoa ***************************结构体与Cla ...
- Swift_字符串详解(String)
Swift_字符串详解(String) 类型别名 //类型别名 fileprivate func testTypeAliases() { let index = String.Index.self p ...
- Swift_语法的熟悉
Swift_语法的熟悉 oc与swift区变 文件区别oc有实现文件以及声明文件等,在swift中实现机声明类似文件总归结一个即可 1. 常量与变量的初始化 常量 关键字"let" ...
- Swift_属性
Swift_属性 点击查看源码 class DataImporter { var fileName = "data.txt" init() { print("初始化&qu ...
- Swift_类和结构体
Swift_类和结构体 点击查看源码 struct Resolution { var width = 0 var height = 0 } class VideoMode { var resoluti ...
- Swift_枚举
Swift_枚举 点击查看源码 空枚举 //空枚举 enum SomeEnumeration { // enumeration definition goes here } 枚举基本类型 //枚举基本 ...
- Swift_字典详解
Swift_字典详解 点击查看源码 初始化 fileprivate func testInit() { //空字典 var dic = [String:String]() print(dic) dic ...
- Swift_数组详解
Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...
- Java初始化过程
这篇文章主要讲解Java在创建对象的时候,初始化的顺序.主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不 ...
随机推荐
- BZOJ3498: PA2009 Cakes(三元环)
题意 题目链接 Sol 按照套路把边转成无向图,我们采取的策略是从权值大的向权值小的连边 然后从按权值从小到大枚举每个点,再枚举他们连出去的点\(v\) 如果\(v\)的度数\(\leqslant M ...
- js event事件对象概括
事件是用户或者浏览器自身执行的动作,而响应某个事件的函数就叫做事件处理程序或者叫事件侦听器. 定义事件处理程序可以大致分为以下三种: 一.html事件处理程序 元素支持的每种事件都可以用一个与之对应的 ...
- Git 命令 操作
常用 Git 命令清单 我每天使用 Git ,但是很多命令记不住.一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单. ...
- GeoServer中WMS、WFS的请求规范(转载)
1.背景 1.1WMS简介 Web地图服务(WMS)利用具有地理空间位置信息的数据制作地图.其中将地图定义为地理数据可视的表现.这个规范定义了三个操作:GetCapabitities返回服务级元数据, ...
- Java 之变量和常量(2)
Java中的关键字: Java 语言中有一些具有特殊用途的词被称为关键字.关键字对 Java 的编译器有着特殊的意义,在程序中应用时一定要慎重哦!! Java 中常用关键字: 问:这么多,记不住啊.. ...
- Codeforces Round #412 A Is it rated ?
A. Is it rated? time limit per test 2 seconds memory limit per test 256 megabytes Is it rated? Her ...
- c#调用c++制作的基于mfc的ocx控件
原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/51286926 原文中有问题部分已修改. c#调用c++制作的基于mfc的ocx控件 ...
- spring----面试题
1.什么是Spring beans? Spring beans 是那些形成Spring应用的主干的java对象.它们被Spring IOC容器初始化,装配,和管理.这些beans通过容器中配置的元数据 ...
- 在线官网Spring Initializr 或 IntelliJ IDEA 快速搭建springboot项目
Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置’,实现零配置. 那么,如何快速新建一个一个spring ...
- Windows下sc create命令行添加/创建/修改服务
添加服务: sc create TestService binpath= "D:\TestApp\TestService.exe" 注意:所有的等号和值之间需要一个空格(等号前不要 ...