<返回更多

Go、Rust、Nim等新兴语言,为什么都抛弃了constructor?

2023-05-30  今日头条  埋头苦干的小码农
加入收藏

在许多新兴语言如 Go、Rust、Nim 中,确实没有传统意义上的构造函数(constructor)。这并不意味着这些语言不能进行类似构造函数的操作,而是它们采用了不同的设计哲学和模式来达到相似的目的。

原因

  1. 不强制使用面向对象编程: 在 Go 和 Rust 中,并不将面向对象编程(OOP)作为主要的编程范式。Go 采用了更加简单的数据结构(结构体,struct)和接口(interface),而 Rust 提倡更多的数据抽象和不可变性。这些语言更加关注数据和行为的分离,而不是将它们封装到对象中。
  2. 更灵活的初始化: 通过普通函数进行对象的初始化,可以提供更大的灵活性。比如,你可以根据不同的参数返回不同类型的对象,或者返回错误,而不是在构造函数中抛出异常。这样做可以更好地进行错误处理。
  3. 易于理解和使用: 构造函数在一些情况下可能会导致代码更加复杂,特别是在涉及到继承和多态的时候。相比之下,普通函数进行初始化更加直观和简单。

每种语言处理对象初始化的方式

type Foo struct {
    Bar int
}

func NewFoo(bar int) *Foo {
    return &Foo{Bar: bar}
}
struct Foo {
    bar: i32,
}

impl Foo {
    fn new(bar: i32) -> Foo {
        Foo { bar: bar }
    }
}
type Foo = object
    bar: int

proc newFoo(bar: int): Foo =
    return Foo(bar: bar)

总的来说,这些新兴语言虽然没有传统意义上的构造函数,但它们提供了其它方式来进行对象的创建和初始化。这些方式在一些情况下可以提供更多的灵活性和简洁性。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>