gpt4 book ai didi

swift - 仅在我的结构中扩展 Double

转载 作者:可可西里 更新时间:2023-11-01 02:16:48 25 4
gpt4 key购买 nike

我希望能够通过到 String 的自定义转换来扩展 Double,但我想将其限制在类/结构的实现中。对于

extension Double {
var customStringOutput: String {
guard self >= 0.0 else { return "Invalid" }
return "My number is: \(self)"
}
}

struct MyStruct {
var myNumber: Double = 100.0
}

let myStruct = MyStruct()
let doubleFail = 99.0
print(myStruct.myNumber.customStringOutput) //"My number is: 100.0"
print(doubleFail.customStringOutput) //"My number is :99.0" - Should fail

我试图创建一个协议(protocol),例如:

protocol DoubleCustomStringConvertable { ... }

将其应用于 Double 会产生与直接扩展 Double 相同的结果。我可以在我的结构中创建一个函数,它将 double 作为参数并返回我的字符串,这将技术上解决我的问题,但这更像是一个学习练习,我喜欢该属性的更简洁的语法.

如何允许协议(protocol)仅应用于我定义的结构中的 Double?这可能是如此简单,我会踢自己!

最佳答案

不要让它成为一个协议(protocol),而只是一个在你的结构中定义的函数。没有办法限制协议(protocol)的范围(限制到像 MyStruct 这样的值类型中的所有 Double)。

关于swift - 仅在我的结构中扩展 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37545939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com