Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我想为UnsafeMutablePointer创建一个只影响UnsafeMutablePointer< UInt8> …的扩展程序. 我理解这些说明是相关的,但我不确定如何: When you extend a generic type, you do not provide a type parameter list as part of the extension’s definition. 我想为UnsafeMutablePointer创建一个只影响UnsafeMutablePointer< UInt8> …的扩展程序.

我理解这些说明是相关的,但我不确定如何:

When you extend a generic type,you do not provIDe a type parameter List as part of the extension’s deFinition. Instead,the type parameter List from the original type deFinition is available within the body of the extension,and the original type parameter names are used to refer to the type parameters from the original deFinition.

基本上,我正在尝试使用此方法:

func toSwift(length: Int) -> [Int] {    var retVal : [Int] = []    for i in 0..<length {        retVal.append(Int(self[i]))    }    return retVal}

在没有UnsafeMutablePointer< UInt8>的情况下对自己采取行动作为参数……这可能吗?

Swift 3.1更新

从Swift 3.1(Xcode 8.3 beta版本)开始,现在支持具体的相同类型要求.你现在可以说:

extension UnsafeMutablePointer where Pointee == UInt8 {    func asArray(withLength length: Int) -> [Int] {        return UnsafeBufferPointer(start: self,count: length).map(Int.init)    }}

Pre Swift 3.1

你可以这样做 – 虽然它不是特别好.您必须创建一个新协议才能“标记”UInt8类型,然后将扩展约束到该协议.它也不允许您轻松指定Int(…)初始化程序可以采用_UInt8Type输入 – 您必须实现一个Hacky’shadow’方法来执行此 *** 作.

protocol _UInt8Type {    func _asInt() -> Int}extension UInt8 : _UInt8Type {    func _asInt() -> Int {        return Int(self)    }}// Change 'Pointee' to 'Memory' for Swift 2extension UnsafeMutablePointer where Pointee : _UInt8Type {    func asArray(withLength length:Int) -> [Int] {        return UnsafeBufferPointer(start: self,count: length).map{[+++]._asInt()}    }}

总而言之,我更喜欢保持这个完全通用,并使用@AMomchilov’s solution.我只是为了完成而添加这个.

虽然值得注意的是,as a part of the Swift Generics Manifesto已经提出了具有扩展的具体相同类型要求(扩展类型,其中Generic == SomeType) – 所以希望这将在未来版本的Swift中实现.

总结

以上是内存溢出为你收集整理的swift – 泛型类型`UnsafeMutablePointer`的扩展全部内容,希望文章能够帮你解决swift – 泛型类型`UnsafeMutablePointer`的扩展所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
swift – 泛型类型`UnsafeMutablePointer`的扩展_app_内存溢出

swift – 泛型类型`UnsafeMutablePointer`的扩展

swift – 泛型类型`UnsafeMutablePointer`的扩展,第1张

概述我想为UnsafeMutablePointer创建一个只影响UnsafeMutablePointer< UInt8> …的扩展程序. 我理解这些说明是相关的,但我不确定如何: When you extend a generic type, you do not provide a type parameter list as part of the extension’s definition. 我想为UnsafeMutablePointer创建一个只影响UnsafeMutablePointer< UInt8> …的扩展程序.

我理解这些说明是相关的,但我不确定如何:

When you extend a generic type,you do not provIDe a type parameter List as part of the extension’s deFinition. Instead,the type parameter List from the original type deFinition is available within the body of the extension,and the original type parameter names are used to refer to the type parameters from the original deFinition.

基本上,我正在尝试使用此方法:

func toSwift(length: Int) -> [Int] {    var retVal : [Int] = []    for i in 0..<length {        retVal.append(Int(self[i]))    }    return retVal}

在没有UnsafeMutablePointer< UInt8>的情况下对自己采取行动作为参数……这可能吗?

Swift 3.1更新

从Swift 3.1(Xcode 8.3 beta版本)开始,现在支持具体的相同类型要求.你现在可以说:

extension UnsafeMutablePointer where Pointee == UInt8 {    func asArray(withLength length: Int) -> [Int] {        return UnsafeBufferPointer(start: self,count: length).map(Int.init)    }}

Pre Swift 3.1

你可以这样做 – 虽然它不是特别好.您必须创建一个新协议才能“标记”UInt8类型,然后将扩展约束到该协议.它也不允许您轻松指定Int(…)初始化程序可以采用_UInt8Type输入 – 您必须实现一个Hacky’shadow’方法来执行此 *** 作.

protocol _UInt8Type {    func _asInt() -> Int}extension UInt8 : _UInt8Type {    func _asInt() -> Int {        return Int(self)    }}// Change 'Pointee' to 'Memory' for Swift 2extension UnsafeMutablePointer where Pointee : _UInt8Type {    func asArray(withLength length:Int) -> [Int] {        return UnsafeBufferPointer(start: self,count: length).map{._asInt()}    }}

总而言之,我更喜欢保持这个完全通用,并使用@AMomchilov’s solution.我只是为了完成而添加这个.

虽然值得注意的是,as a part of the Swift Generics Manifesto已经提出了具有扩展的具体相同类型要求(扩展类型,其中Generic == SomeType) – 所以希望这将在未来版本的Swift中实现.

总结

以上是内存溢出为你收集整理的swift – 泛型类型`UnsafeMutablePointer`的扩展全部内容,希望文章能够帮你解决swift – 泛型类型`UnsafeMutablePointer`的扩展所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1047165.html

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

发表评论

登录后才能评论

评论列表(0条)

保存