swift不透明类型的整型不能赋值给整型?

func A() -> some Equatable {
    1
}

print(type(of: A()))


var x: Int = 0
x = A()
阅读 1.6k
1 个回答

Swift不透明类型的整型不能直接赋值给整型。因为类型不匹配,A() 返回 Some Equatable, 所以把A()赋值给x时候需要进行类型转换

func A() -> some Equatable {
    1 
}

print(type(of: A()))   //Output  is Int

var x: Int = 0
//error: cannot assign value of type 'some Equatable' to type 'Int'
//类型不匹配所以需要添加 as!Int 进行转换

x = A() as! Int

print(x) //Output is 1
Refs

https://docs.swift.org/swift-book/LanguageGuide/OpaqueTypes.html
swift 的协议以及不透明类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进