在Swift中,是否可以为类类型创建隐式转换?

在Swift中,是否可以为类类型创建隐式转换?,第1张

概述我喜欢C#的一个原因是你可以为你的类定义隐式转换器.例如,我创建了一个VectorGeometryBuilder类,其中包含MoveForwardByX,TurnByYDegrees,LineToPoint等方法.然后,它定义了对Geometry类的隐式转换.这允许我使用我漂亮的构建器来创建我的几何体,然后将整个kit-n-caboodle传递给任何期望几何体的函数,即使VectorGeometr 我喜欢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 = fauxIntsomeFuncTakingAnInt(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)
总结

以上是内存溢出为你收集整理的在Swift中,是否可以为类类型创建隐式转换?全部内容,希望文章能够帮你解决在Swift中,是否可以为类类型创建隐式转换?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1007241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存