在Swift中,是否可以为类类型创建隐式转换?
发布时间:2020-12-14 04:42:43 所属栏目:百科 来源:网络整理
导读:我喜欢C#的一个原因是你可以为你的类定义隐式转换器.例如,我创建了一个VectorGeometryBuilder类,其中包含MoveForwardByX,TurnByYDegrees,LineToPoint等方法.然后,它定义了对Geometry类的隐式转换.这允许我使用我漂亮的构建器来创建我的几何体,然后将整个kit-
我喜欢C#的一个原因是你可以为你的类定义隐式转换器.例如,我创建了一个VectorGeometryBuilder类,其中包含MoveForwardByX,TurnByYDegrees,LineToPoint等方法.然后,它定义了对Geometry类的隐式转换.这允许我使用我漂亮的构建器来创建我的几何体,然后将整个kit-n-caboodle传递给任何期望几何体的函数,即使VectorGeometryBuilder本身不是Geometry的子类.相反,它将Geometry对象公开为属性,隐式转换器会抓取并返回该属性.
我想知道的是Swift是否有类似的东西. 考虑这个构成的场景…… class FauxInt { init(_ initialValue:Int) { value = initialValue } var value:Int } let fauxInt = FauxInt(14) 这些是我想要做的事情…… let realInt:Int = fauxInt someFuncTakingAnInt(someInt:fauxInt) 同样,转换为Int应该隐含意味着期望Int的任何地方,我可以使用或传递FauxInt. 有没有办法让上述成为可能? 解决方法
Swift不支持隐式转换 – 最接近的等价是通过额外的构造函数完成的.所以要将Double转换为Int:
let i: Int = Int(myDouble) 在您的情况下,您可以定义Int的扩展以创建一个新的init,它将fauxInit作为参数: extension Int { init(_ myFaux: FauxInt) { self = myFaux.value } } let fauxInt = FauxInt(14) let realInt = Int(fauxInt) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xml与java双向映射
- 怎么看时序图--nand flash的读操作详解
- c# – 捕获EngineExecutionException
- actionscript-3 – Adob??e Air AS3,处理窗口,探查器建议库
- MICRO03:Razor: A Low-Power Pipeline Based on Circuit-Le
- ruby-on-rails – 运行RSpec时Zeus抛出错误
- ruby – 动态添加的实例方法无法访问类变量
- 使用最新版本Dojo1.7的dojox/mobile开发移动设备web应用
- oracle sql中的join关键字和inner join关键字有什么区别?
- 简单统计报表例子(存储过程)