与Swift中的_转换相反,用于指定不同类型的值
Swift提供了一种称为与Swift中的_转换相反,用于指定不同类型的值,swift,Swift,Swift提供了一种称为\u conversion的特殊方法,允许您将类型隐式转换为其他类型。我希望能够定义一个方法,允许您采用另一种方式:能够将自定义类型分配给另一个类型,并将其隐式转换为允许分配工作 转发有效的用法: class MyClass<T> { var myValue : T func __conversion() -> T? { return myValue } init(value: T) { s
\u conversion
的特殊方法,允许您将类型隐式转换为其他类型。我希望能够定义一个方法,允许您采用另一种方式:能够将自定义类型分配给另一个类型,并将其隐式转换为允许分配工作
转发有效的用法:
class MyClass<T> {
var myValue : T
func __conversion() -> T? {
return myValue
}
init(value: T) {
self.myValue = value
}
}
func takesString(aString: String?) {
}
var myInstance = MyClass(value: "Hello")
takesString(myInstance)
class MyClass<T> {
func __conversion(aValue: T) -> MyClass<T> {
return MyClass(value: T)
}
}
var myInstance : MyClass<String> = "Hello World" // compiler error
class-MyClass{
var myValue:T
func\uu conversion()->T{
返回myValue
}
初始值(值:T){
self.myValue=value
}
}
func takesString(aString:String?){
}
var myInstance=MyClass(值:“Hello”)
takesString(myInstance)
我想做什么:
class MyClass<T> {
var myValue : T
func __conversion() -> T? {
return myValue
}
init(value: T) {
self.myValue = value
}
}
func takesString(aString: String?) {
}
var myInstance = MyClass(value: "Hello")
takesString(myInstance)
class MyClass<T> {
func __conversion(aValue: T) -> MyClass<T> {
return MyClass(value: T)
}
}
var myInstance : MyClass<String> = "Hello World" // compiler error
class-MyClass{
函数转换(aValue:T)->MyClass{
返回MyClass(值:T)
}
}
var myInstance:MyClass=“Hello World”//编译器错误
有什么方法可以做到这一点吗?您是否尝试过向字符串添加扩展名
extension String {
func __conversion() -> MyClass {
var myInstance = MyClass()
myInstance.myString = self
return myInstance
}
}
它在iOS操场的Xcode 6 Beta 4中工作
let anInstance: MyClass = "test"
要处理泛型:
class MyClass<T> {
var myString = ""
var myT : T?
}
extension String {
func __conversion<T>() -> MyClass<T> {
var myInstance = MyClass<T>()
myInstance.myString = self
return myInstance
}
}
let anInstance: MyClass<Int> = "test"
事实证明_u转换是一种私有方法,因此一旦Swift发布,这肯定不可能实现。是的,我确实尝试过。但是,为了清晰起见,我实际上简化了我真正的问题。我试图用MyClass作为泛型类型来实现这一点,因此我不能像扩展特定类型那样扩展泛型类型。是的,我希望不需要用户显式构造MyClass来完成分配。基本上,我希望我的类型能够像其他类型一样透明地工作,就像Optionals的工作方式一样。@drewag我不确定这是您想要的,但是泛型可以工作。是的,但是我必须为每种可能的类型创建一个扩展。此外,事实证明uu转换是一个私有方法,将在beta版结束前删除,因此整个过程是一个没有意义的点
\uu conversion()->MyClass
方法对于所有MyClass
类型都是通用的。在实例化时,特定类型被绑定。噢,不!这是否意味着标准库中的所有隐式转换也将消失?我不能肯定,但我想他们会简单地将该功能私有化。然而,我认为标准库中并没有太多的隐式转换。从iOS 8 beta 5开始,它们就消失了:“\uu转换”函数不再被允许。