美文网首页
结构体风格的类

结构体风格的类

作者: Marc_Steven | 来源:发表于2016-04-21 10:24 被阅读17次

struct Social {
var twitter:String
}
struct PersonOne {
var name:String
var age :Int
var social:Social
}
class PersonTwo {
var name:String
var age :Int
var social :Social
init(name:String,age:Int,social:Social) {
self.name = name
self.age = age
self.social = social
}
}
class Person :ReflectedStringConvertible{
var name:String
var age :Int
var social:Social
init(name:String,age:Int,social:Social) {
self.name = name
self.age = age
self.social = social
}

}
public protocol ReflectedStringConvertible:CustomStringConvertible {}
extension ReflectedStringConvertible {
public var description:String {
let mirror = Mirror(reflecting: self)
var str = "(mirror.subjectType)("
var first = true
for(label,value) in mirror.children {
if let label = label {
if first {
first = false
}else {
str += ","
}
str += label
str += ":"
str += "(value)"
}
}
str += ")"
return str
}
}
let matt = Person(name: "Tony", age: 23, social: Social(twitter: "@matt"))
print(matt)
let tony = PersonTwo(name: "tony", age: 32, social: Social(twitter: "@tony"))
print(tony)
let marc = PersonOne(name: "Steven", age: 23, social: Social(twitter: "@PinkZhao"))
print(marc)
如果你用结构体构造一个Person,则新建实例后输出的带有name,age和social等信息,但如果用class替代后则输出PersonTwo,如何实现呢?我们自己定义了一个协议-反射字符串可变的协议,让它遵从自定义字符串可变的协议,进而让类遵从反射字符串可变协议,从而实现了和结构体一样输出的功能。

相关文章

  • 结构体风格的类

    struct Social {var twitter:String}struct PersonOne {var n...

  • 第九章 类和结构体

    c++中,结构体是稍有不同的类,类能做的,结构体也可以; 而swift中,结构体与类有较大区别, 结构体与类的区别...

  • 类和结构体

    类与结构体 本节内容包括: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合类型的赋值与...

  • Swift笔记<十五>结构体和类的区别

    结构体和类的区别 结构体有逐一构造器,类没有 结构体是值类型,类是引用类型 结构体不是继承(意味着没有多态)

  • swift基础_结构体和类

    一.结构体和类 结构体张这个样子 类张这个样子 二.结构体和类的区别 针对结构体, 即使你没有定义函数,编译器也会...

  • Swift5 _07_多态原理_初始化

    多态 结构体struct与类class 的区别(1)结构体是值类型、类是引用类型(2)类可以继承,结构体不能继承(...

  • 《C++ Primer Plus》:复合类型

    本章内容概览: 数组 C风格字符串 string类字符串 getline()和get()读取字符串 结构体 共用体...

  • Swift 面向对象 2: 结构体

    1.结构体: swift中的结构体和类非常相似,也就是结构体能实现类的全部操作(功能)结构体是值类型,类是引用类型...

  • Swift学习_基本语法之枚举&类&结构体

    1.枚举 类和结构体 在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

网友评论

      本文标题:结构体风格的类

      本文链接:https://www.haomeiwen.com/subject/jkjtrttx.html