资源修饰符(Access modifiers)


结构体字段默认是私有的和不可变的(结构体也不可变)。 他们的访问修饰符可以用pubmut来改变。 总共有5种可能的选择:

struct Foo {
    a int     // private immutable (default) 
mut: 
    b int     // private mutable 
    c int     // (you can list multiple fields with the same access modifier)   
pub: 
    d int     // public immmutable (readonly) 
pub mut: 
    e int     // public, but mutable only in parent module  
pub mut mut: 
    f int       // public and mutable both inside and outside parent module  
}                 // (not recommended to use, that's why it's so verbose)

例如,这是内置模块中定义的字符串类型:

struct string {
    str byteptr
pub:
    len int
}

从这个定义中很容易看出字符串是一个不可变类型。

内置字符串数据的字节指针根本不可访问。 len字段是公开的,但不是可变的。

fn main() {
    str := 'hello' 
    len := str.len // OK  
    str.len++      // Compilation error  
}

results matching ""

    No results matching ""