这是工厂吗?我如何为结构创建构造函数?

Ani*_*iki 4 rust

struct Person{
    name: String
}

fn person_factory(name: String)-> Person {
    Person{
        name,
    }
}

fn main() {
    let p1 = person_factory("Viktor Draganov".to_string());

    println!("{}", p1.name);
}
Run Code Online (Sandbox Code Playgroud)

这家工厂生锈了吗?如何从构造函数初始化 person?

jos*_*nda 13

person_factory看起来确实像一家工厂(如果不是特别有用或必要的工厂)。通常工厂的存在是为了从用户那里抽象出一些创建逻辑。比如创建人时将出生日期转换为年龄。

Rust 没有任何像 Java、Python、C++ 等语言中熟悉的构造函数一样工作的特殊方法;然而,有一种常见的做法提供了与本网站中描述的基本相同的行为,其中涵盖了 Rust 设计模式:构造函数

按照这篇文章,您可以为您的 Person 类创建一个“构造函数”,如下所示(它应该看起来与您上面共享的工厂方法非常相似):

struct Person{
    name: String
}

impl Person {
    pub fn new(name: String) -> Self {
        Person {
            name: name
        }
    }
}

fn main() {
    let p1 = Person::new("Viktor Draganov".to_string());

    println!("{}", p1.name);
}

Run Code Online (Sandbox Code Playgroud)