加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 为什么let声明的结构可以改变?

发布时间:2020-12-14 04:38:43 所属栏目:百科 来源:网络整理
导读:在下面的代码中,’ptr’是let声明的结构,但是它的成员变量’pointee’可以改变,为什么? ????let ptr = UnsafeMutablePointer Int .allocate(capacity:1) ????ptr.pointee = 1 解决方法 UnsafeMutablePointer 是一个结构,但它声明了 public struct UnsafeMu
在下面的代码中,’ptr’是let声明的结构,但是它的成员变量’pointee’可以改变,为什么?

????let ptr = UnsafeMutablePointer< Int> .allocate(capacity:1)
????ptr.pointee = 1

解决方法

UnsafeMutablePointer是一个结构,但它声明了

public struct UnsafeMutablePointer<Pointee> : Strideable,Hashable {

    public var pointee: Pointee { get nonmutating set }
    public subscript(i: Int) -> Pointee { get nonmutating set }

}

这里的“非突变集”意味着设置属性不会发生变异
指针变量本身的状态.

因此,即使ptr,也可以为ptr.pointee分配一个新值
是一个常量,下标setter也是如此:

let ptr = UnsafeMutablePointer<Int>.allocate(capacity:1)
ptr.pointee = 1
ptr[0] = 2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读