swift - Swift中的Something.self与self.something
问题描述
我明白那个
self.something
这是该类的成员值。但什么是
something.self
解决方案
考虑像这样的代码
JSONDecoder().decode(what, from: myJSONData)
我有什么去哪里what
?我们必须告诉解码器期望解码什么类型的东西。基本上,what
是类型的名称——符合 Decodable 的类、结构或枚举的名称。
但是如何说出一个类型的名字呢?假设您希望解码的事物类型是字符串。那你在这里说什么呢?
JSONDecoder().decode(String, from: myJSONData) // error
不,你不能像那样突然说出一种类型的名称。这就是你的做法:
JSONDecoder().decode(String.self, from: myJSONData)
当您说String.self
的是String的元类型时,您真正传递的是这里。而这个例子正是它的用途,即当您需要将类型作为参数传递时。
此方法的声明通过使用以下方式发出信号.Type
:
func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
该表达式T.Type
告诉您调用此方法时传递的内容应该是Something.self
.
推荐阅读
- json - JQ:获取元素ID,如果它包含一个键
- python - 如何从 python Binaris 函数设置 HTTP 响应标头?
- regex - 捕获字符串中的接口,然后将其存储在变量中
- html - Bootstrap 4 输入调整大小行为
- uipath - UIPath 执行工作流列表
- typescript - 打字稿不断在导入上方添加一个函数
- cygwin - cygwin /dev/input/eventX 功能
- grid - 将点移动到规则网格
- java - 使用 java 代码配置创建管理 MongoDb 连接的 Jpa EntityManager
- bash - 如何通过在 ubuntu 中包含“cd”命令来运行 shell 脚本?