gpt4 book ai didi

flutter - 为什么 dart 有 get 和 set 的特殊关键字?

转载 作者:行者123 更新时间:2023-12-03 03:35:16 35 4
gpt4 key购买 nike

我是 Flutter 的新手,我只是想知道 getter 和 setter 的特殊关键字。为什么 dart 保留特殊关键字 getset分别为getter和setter?有什么特别的原因吗,因为像其他语言一样,它也可以用简单的函数来完成。

dart 中的示例我们有获取和设置关键字。

class Person {
String _name;
String get name => _name;
set name (String val) => _name = val;
}


在java中,我们使用公共(public)方法做同样的事情。
// Java, No get, set keywords used
public class Person {
private String name; // private = restricted access

// Getter
public String getName() {
return name;
}

// Setter
public void setName(String newName) {
this.name = newName;
}
}

为什么我们在 dart 中需要单独的 get 和 set 关键字?这与我们在 java 中使用的普通 getter 和 setter 方法不同吗?

我们可以简单地使用
class Person {
String _name;

String getName() => _name;
void setName(String val) => _name=val;
}

我知道这有点像直接使用变量而不是方法,我的问题是有什么我们不能用简单的 getter 和 setter 方法实现的,我们可以使用 getset关键词?

最佳答案

这基本上是为了方便和向后兼容。假设您从一个公共(public)领域开始:

class Person {
final String name;
}

但随后您决定 name 应该是基于名字和姓氏的计算字段:

class Person {
final String lastName;
final String firstName;
String get name => '$firstName $lastName';
}

在 java 中,最好的做法是永远不要有一个公共(public)类成员变量,因为它没有办法在不更改 API 的情况下转换到方法。所以你总是要写 getVariable()访问方法,即使其中 99% 仅具有 return variable;作为 body 。

关于flutter - 为什么 dart 有 get 和 set 的特殊关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498798/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com