이유는이 IP 주소를 동결해야 rubocop왜 상수에 할당 된 변경 가능한 객체를 고정 시키시겠습니까?
lib/awesomelib/aws.rb:6:10: C: Style/MutableConstant: Freeze mutable objects assigned to constants.
IP = '34.111.241.111'
^^^^^^^^^^^^^^^^
에 의해보고 된이 범죄를 고려?
이유는이 IP 주소를 동결해야 rubocop왜 상수에 할당 된 변경 가능한 객체를 고정 시키시겠습니까?
lib/awesomelib/aws.rb:6:10: C: Style/MutableConstant: Freeze mutable objects assigned to constants.
IP = '34.111.241.111'
^^^^^^^^^^^^^^^^
에 의해보고 된이 범죄를 고려?
IP
을 상수로 선언했기 때문에 IP
에 할당 된 값을 고정해야합니다. 이는 IP
에 할당 된 값을 변경하지 않기를 나타냅니다.
문제는 루비에서 상수에 값을 할당해도 값이 변경되지 않는다는 것입니다. 상수에 할당 된 값을 변경하면 경고 메시지가 나타납니다. 값을 실제로 변경 불가능하게 만들려면 .freeze
값을 상수에 할당해야합니다. 상수에 할당 된 값을 고정한 후에 값을 변경하려고하면 런타임 오류가 발생합니다.
개체를 고정하면 더 이상 개체를 변이시킬 수 없습니다. 상수는 더 이상 바인딩을 변경할 수 없음을 의미합니다. (글쎄요, 바인딩을 변경하면 경고 메시지가 나타납니다.) 둘은 잘 어울립니다.
특히, 변경 불가능한 바인딩에 할당 된 변경 가능한 개체가 여전히 변형 될 수 있다는 사실은 일부 사용자에게는 혼란을 줄 수 있습니다. 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
혼란스러운 변수와 객체입니다. –
간결한 대답. – sawa
@ JörgWMittag 나는 원래의 프레이싱이 엉성함에 동의하며, 나는 그것을 개정했다. 감사. –