Elm- Records 3일차

기록



리차드 펠드먼에 따르면,

Records are plain, immutable data.



Javascript 객체와 문법적으로 유사하지만 완전히 동일하지는 않습니다. 예를 들어 prototype 및 없음 this이 있습니다. 제가 정말로 이야기하고 싶은 것은 레코드 업데이트입니다.

레코드 업데이트는 단순히 Elm에서 레코드의 속성을 변경하는 방법을 나타냅니다. 여기서 "돌연변이"라는 용어는 일종의 잘못된 명칭입니다. 레코드 업데이트는 이전 레코드를 변경하지 않고 대신 이전 레코드를 기반으로 새 레코드를 만듭니다. 예를 들어 다음과 같은 elm 코드가 있습니다.

record = { a = 1, b = 2 }

newRecord = { record | a = 5 }



위의 코드는 변경되지 않습니다record. Javascript에서 개체를 변경하기 위한 . 연산자와 매우 유사해 보이지만 동일하지는 않습니다. 이것은 spreading record에서 newRecord에 훨씬 더 가깝고 필요한 필드를 업데이트합니다. 이 동작에 대해 생각하는 방식은 Javascript에서 다음과 같습니다.

const record = Object.freeze({ a: 1, b: 2 });
const newRecord = Object.freeze({ ...record, a: 5 });



여기서는 Object.freeze를 사용하고 있는데, 두 경우 모두 반환된 객체가 불변이어야 하기 때문입니다. 두 경우 모두 실제 돌연변이가 발생하지 않는다는 것을 알 수 있습니다. 이는 값을 참조로 전달하는 데 따른 부작용으로 인한 많은 문제를 줄여주기 때문에 좋습니다.

이것은 매우 흥미 롭습니다!

좋은 웹페이지 즐겨찾기