용도가 다른 것 같다. 상수를 쓰는 목적은 보통 '매직 넘버' 같은 걸 피하려고 하는 거잖아? 예컨대 기본 타임아웃이 5초라면 사방에 '5' 같은 숫자를 퍼뜨리지 않기 위해서... 반면에 함수형 같은데서 이야기하는 불변성이라는 건 내가 지금 다루는 이 데이터를 아무도 바꾸지 않을 거라는 건 보장하고 싶을 때 쓰는 거다.
바꾸어 말하면, 상수는 왜 여기에 뜬금없이 '5'를 썼지? 하는 거나 나중에 10초로 바꿨을 때 빼먹는다던지 하는 걸 피하려고 쓰는거고, 불변성은 예컨대 어떤 값으로 객체를 초기화해서 뭔가 조작을 하는데 그 동안에 다른 스레드 같은데서 그 값을 맘대로 바꾼다던지 그런 걸 원천적으로 막겠다는 의도라고 이해한다.
fender(mysticfall)2020-08-01 12:21
답글
immutable이 constant 목적도 포괄한다고 보아도 무방한가요?
익명(223.62)2020-08-01 13:20
답글
ㄴㄴ 그냥 별개라고 생각하는 게 나은 듯.
fender(mysticfall)2020-08-01 14:05
compile time vs runtime 차이로 보는데... 코드를 컴파일하고 났을때 코드에 그 숫자가 박혀있으면 const고 아니면 아니고. 프로그램 실행한 시스템 시간을 돌려주는 함수같은건 immutable하겠다만 컴파일 타임에 결정할 수 없으니 const는 아닌거
안바꾸는 거 맞음
해당 댓글은 삭제되었습니다.
c에서는 constexpr가 없어서인가요?
해당 댓글은 삭제되었습니다.
리터럴은 해당 안되나 - dc App
키워드로서의 const를 말하는거라면 애초에 언어마다 천차만별
용도가 다른 것 같다. 상수를 쓰는 목적은 보통 '매직 넘버' 같은 걸 피하려고 하는 거잖아? 예컨대 기본 타임아웃이 5초라면 사방에 '5' 같은 숫자를 퍼뜨리지 않기 위해서... 반면에 함수형 같은데서 이야기하는 불변성이라는 건 내가 지금 다루는 이 데이터를 아무도 바꾸지 않을 거라는 건 보장하고 싶을 때 쓰는 거다. 바꾸어 말하면, 상수는 왜 여기에 뜬금없이 '5'를 썼지? 하는 거나 나중에 10초로 바꿨을 때 빼먹는다던지 하는 걸 피하려고 쓰는거고, 불변성은 예컨대 어떤 값으로 객체를 초기화해서 뭔가 조작을 하는데 그 동안에 다른 스레드 같은데서 그 값을 맘대로 바꾼다던지 그런 걸 원천적으로 막겠다는 의도라고 이해한다.
immutable이 constant 목적도 포괄한다고 보아도 무방한가요?
ㄴㄴ 그냥 별개라고 생각하는 게 나은 듯.
compile time vs runtime 차이로 보는데... 코드를 컴파일하고 났을때 코드에 그 숫자가 박혀있으면 const고 아니면 아니고. 프로그램 실행한 시스템 시간을 돌려주는 함수같은건 immutable하겠다만 컴파일 타임에 결정할 수 없으니 const는 아닌거
아 물론 똑같이 불변이라는 전제 하에..