元类型.Type
和.self
Swift中有什么区别?
这样做.self
并.Type
返回一个struct
?
我了解.self
可以用来进行检查dynamicType
。你怎么用.Type
?
这是一个简单的示例:
func printType<T>(of type: T.Type) {
// or you could do "\(T.self)" directly and
// replace `type` parameter with an underscore
print("\(type)")
}
printType(of: Int.self) // this should print Swift.Int
func printInstanceDescription<T>(of instance: T) {
print("\(instance)")
}
printInstanceDescription(of: 42) // this should print 42
假设每个实体由两件事表示:
类型: # entitiy name #
元类型: # entity name # .Type
元类型类型是指任何类型的类型,包括类类型,结构类型,枚举类型和协议类型。
资源。
您会很快注意到这是递归的,并且可以通过诸如此类的类型(((T.Type).Type).Type)
来实现。
.Type
返回一个元类型的实例。
我们可以通过两种方式获取元类型的实例:
调用.self
一个像Int.self
这样的具体类型,它将创建一个 静态的元 类型实例Int.Type
。
通过从任何实例获取 动态元 类型实例 type(of: someInstance)
。
危险区域:
struct S {}
protocol P {}
print("\(type(of: S.self))") // S.Type
print("\(type(of: S.Type.self))") // S.Type.Type
print("\(type(of: P.self))") // P.Protocol
print("\(type(of: P.Type.self))") // P.Type.Protocol
.Protocol
是另一个仅在协议环境中存在的元类型。就是说,我们无法表达只想要的东西P.Type
。这会阻止所有通用算法与协议元类型一起使用,并可能导致运行时崩溃。
对于更多好奇的人:
type(of:)
由于.Protocol
创建的不一致,该html" target="_blank">函数实际上由编译器处理。
// This implementation is never used, since calls to `Swift.type(of:)` are
// resolved as a special case by the type checker.
public func type<T, Metatype>(of value: T) -> Metatype { ... }
元类型和? 做和返回一个? 我知道可以用来检查。你如何使用?
问题内容: 是什么使类型不同于类,反之亦然? (与一般语言无关) 问题答案: 以下答案来自Gof书(“设计模式”) 对象的类定义了对象的实现方式。该类定义了对象的内部状态及其操作的实现。 相反,对象的 类型仅引用其接口-可以响应的一组请求。 一个对象可以具有许多类型,而不同类的对象可以具有相同的类型。 max函数需要一个类型为operation>且具有其自身类型的类型作为其接口之一,满足上述要求的
问题内容: 这两个代码片段之间有什么区别?使用: 使用isinstance(): 问题答案: 总结答案的内容,迎合继承(派生类的实例也是基类的实例),而检查的相等性type则不(要求类型的标识并拒绝实例)子类型,又称为AKA子类)。 通常,在Python中,你当然希望你的代码支持继承(因为继承非常方便,因此停止使用你的代码来使用它会很糟糕!),因此它比检查的身份要糟糕得多,因为它无缝地支持s遗
无法理解在字段中设置即搜索类型数据类型、在分析器中设置Edge NGram Tokenizer和添加index_prefixes参数之间的区别。在我看来,他们毕竟做了同样的工作。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-as-you-type.htmlhttps://www.elastic.co/
元类型、Type、Self AnyObject 代表任意类的instance, 也就是实例对象 类的类型 仅类遵守的协议 (Class-Only Protocols) Any 代表任意类型, 包括function和optional类型 AnyClass 代表任意实例的类型: AnyObject.Type public typealias AnyClass = AnyObject.Type T.se
本文向大家介绍interface 和 type 到底有什么区别?相关面试题,主要包含被问及interface 和 type 到底有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 interface 和 type 到底有什么区别? 作者:rottenpen