[Dart] 복제된 객체의 copyWith 기본
[Dart] 객체 복사
보통 B=A로 복사(실패예)
class User {
final String username;
const User({this.username});
}
void main() {
const userA = User(username: 'UserA');
const userB = userA;
print(userA.username + ':' + userA.hashCode.toString());
print(userB.username + ':' + userA.hashCode.toString());
}
실행 결과UserA:419201198
UserA:419201198
toString()
를 User 클래스class User {
final String username;
const User({this.username});
String toString() => username + ':' + hashCode.toString();
}
void main() {
const userA = User(username: 'UserA');
const userB = userA;
print(userA.toString());
print(userB.username + ':' + userA.hashCode.toString());
}
실행 결과UserA:288318752
UserA:288318752
class User {
final String username;
const User({this.username});
User copyWith({
String username,
}) =>
User(
username: username ?? this.username,
);
String toString() => username + ':' + hashCode.toString();
}
void main() {
const userA = User(username: 'UserA');
final userB = userA;
print(userA.toString());
print(userB.toString());
}
실행 결과UserA:463513894
UserA:463513894
copyWith 함수 사용(성공 예)
const userB = userA.copyWith();
면 다음과 같은 오류가 발생합니다.Const variables must be initialized with a constant value
class User {
final String username;
const User({this.username});
User copyWith({
String username,
}) =>
User(
username: username ?? this.username,
);
String toString() => username + ':' + hashCode.toString();
}
void main() {
const userA = User(username: 'UserA');
final userB = userA.copyWith();
final userC = userA.copyWith(username: 'UserC');
print(userA.toString());
print(userB.toString());
print(userC.toString());
}
실행 결과UserA:610790447
UserA:455007180
UserC:1059822335
Reference
이 문제에 관하여([Dart] 복제된 객체의 copyWith 기본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/iwaku/articles/2020-12-15-iwaku텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)