ios - 如何在 Swift 中实现隐式转换?
问题描述
例如,任何类型T
都可以隐式转换为函数参数UnsafePointer<T>
。这是 Swift 编译器中的一个 hack 吗?我可以自己实现吗?
struct A {
// do something, allow A to implicitly convert to B
}
func readB(b: B) { ... }
readB(A) // Ok
实际上我正在阅读一些关于Swift 的内容UnsafePointer
,当调用将指针作为参数的函数时,Swift 允许隐式指针转换或桥接。我只是想知道 Swift 是如何支持这个特性的。
解决方案
不,您不能自己实现隐式转换或桥接。
最简洁和惯用的解决方案是将类型转换实现为初始化程序。
extension B {
init(_ a: A) {
// Convert.
}
}
readB(
b: .init(A())
)
推荐阅读
- javascript - 无法添加或修改 javascript 对象
- python - 使用 Python 正则表达式从文本中提取信息
- vue.js - 选择值vue js
- api - Odoo 自定义运输模块
- python - 使用 dbus 关闭 docker 容器和 python 中的树莓派
- unit-testing - Symfony 3.4 - 如何为 PHPUnit 服务测试模拟 Request 对象
- c++ - 我可以在类中存储构造函数的模板参数吗
- .net - 重启 Raspbian 后无法识别 Dotnet 命令
- ios - 如何在 swift 中使用 NSNumber 和 Int 在循环中使用 for
- python - Selenium Python 使用用户名密码验证代理 ERR_PROXY_CONNECTION_FAILED