2017-11-01 11 views

답변

3

IP을 상수로 선언했기 때문에 IP에 할당 된 값을 고정해야합니다. 이는 IP에 할당 된 값을 변경하지 않기를 나타냅니다.

문제는 루비에서 상수에 값을 할당해도 값이 변경되지 않는다는 것입니다. 상수에 할당 된 값을 변경하면 경고 메시지가 나타납니다. 값을 실제로 변경 불가능하게 만들려면 .freeze 값을 상수에 할당해야합니다. 상수에 할당 된 값을 고정한 후에 값을 변경하려고하면 런타임 오류가 발생합니다.

+0

혼란스러운 변수와 객체입니다. –

+0

간결한 대답. – sawa

+0

@ JörgWMittag 나는 원래의 프레이싱이 엉성함에 동의하며, 나는 그것을 개정했다. 감사. –

2

개체를 고정하면 더 이상 개체를 변이시킬 수 없습니다. 상수는 더 이상 바인딩을 변경할 수 없음을 의미합니다. (글쎄요, 바인딩을 변경하면 경고 메시지가 나타납니다.) 둘은 잘 어울립니다.

특히, 변경 불가능한 바인딩에 할당 된 변경 가능한 개체가 여전히 변형 될 수 있다는 사실은 일부 사용자에게는 혼란을 줄 수 있습니다. Stack Overflow에 관한 다양한 질문을보십시오.

IP = '34.111.241.111' 
# Dis is a constant, I can never change it, amirite? 

IP << '.255' 

IP 
#=> '34.111.241.111.255' 
# Ooops! 

IP.freeze 

IP << '.255' 
# RuntimeError: can't modify frozen String