所以,我想创建一个运算符('或'),它允许我声明一个这样的变量:
var someNum: Int or Double
这就是一个例子。我想在一些自定义数据类型上实际使用它。但是是否可以为变量声明创建一个运算符,以允许所述变量为两种类型之一,具体取决于它所分配的内容?我知道输入的数据类型是什么,但不幸的是,我现在要么为它分配一种类型的'任何'使用一堆故障安全代码或更改创建的原始数据类型。所以我只是想知道这是否可能或甚至存在。
我使用这篇文章作为参考,但从我读到的内容来看,我不确定我是否可以或如何根据我的需要实现它。 Custom Operators in Swift
提前感谢您提供的所有帮助。
答案 0 :(得分:4)
你不能按照你要求的方式做到这一点。在语法上不可能在这样的声明中使用运算符。
你可以做的是使用枚举来区分种类:
enum NumericInput {
case integral(Int)
case fractional(Double)
}
并将其作为变量的类型:
var value: NumericInput
然后你说
value = .integral(someInteger)
答案 1 :(得分:1)
你可以用泛型来做到这一点:
trac
然后,您可以通过指定创建时的类型struct MyStruct<T>
{
var someNum: T
}
来明确说明您要使用的dataType。
Swift做的一件事使得这一切都非常漂亮,是从构造函数派生出数据类型,所以你也可以这样做:
let a = MyStruct<Int>(someNum: 4)
答案 2 :(得分:0)
您只需使用Any
类型声明值。
例如,
var myVar: Any = shouldAssignDouble ? Double(20) : Float(20)
稍后当您想知道实际类型是Float
还是Double
时,您可以使用
myVar is Double //returns true