development

a = b = c = d = 5와 같이 여러 변수를 할당하는 것이 옳습니까?

big-blog 2021. 1. 10. 19:49
반응형

a = b = c = d = 5와 같이 여러 변수를 할당하는 것이 옳습니까?


a = b = c = d = 5

puts (a) >> 5
puts (b) >> 5
puts (b) >> 5
puts (b) >> 5
a= a+1
puts (a) >> 6
puts (b) >> 5

나는 이와 같은 값을 할당하는 데 아무런 문제가 없다는 것을 알았습니다. 내 질문은 위에 주어진 것과 같이 할당해야합니까?

a , b, c, d = 5, 5, 5, 5

여기서 알아야 할 점은 Ruby에서 숫자가 변경되지 않기 때문에 귀하의 케이스가 정상적으로 작동한다는 것입니다. 당신은 하지 않습니다 당신이 원하는 것을 거의 확실하지 않습니다 같은 객체에 대해 여러 참조를 만들 것이기 때문에, 숫자 다름 아닌 문자열, 배열, 해시 또는 거의 아무것도이 작업을 수행 할 수 :

a = b = c = d = "test"
b << "x"
=> "testx"
a
=> "testx"

병렬 형식은 모든 유형에서 안전합니다.

a,b,c,d = "test","test","test","test"
=> ["test", "test", "test", "test"]
b << "x"
=> "testx"
a
=> "test"

그렇게 할당하는 것은 잘못된 것이 아닙니다 ( a = b = c = d = 5). 모든 변수가 동일한 값을 가져야하는 경우 개인적으로 다중 할당보다 선호합니다.

다른 방법이 있습니다.

a, b, c, d = [5] * 4

기분이 좋으면하세요.

언어는 당신이 발견 한대로 그것을 허용하고 당신이 예상 한대로 작동합니다. 자신에게 물어봐야 할 유일한 질문은 표현력에 관한 것입니다. 코드가 그 목적이 무엇인지 알려주는 것입니까?

개인적으로, 나는 기본값, 가급적이면 0으로 초기화하는 것 외에는이 구조를 사용하는 것을 특히 좋아하지 않습니다. 이상적으로 이렇게 초기화 된 변수는 모두 유사한 목적 (예 : 카운터)을 갖습니다. 그러나 비슷한 목적의 변수가 두 개 이상있는 경우, 예를 들어 해시로 리팩토링되는 복제 형태로 선언하는 것이 좋습니다.


이 두 초기화는 다른 의미를 나타냅니다. a = b = c = d = 5수단 "내 변수들은 같은 값으로 초기화하고,이 값은 5이다한다". 다른 하나 a, b, c, d = 5, 5, 5, 5는 "변수 목록과 해당 초기화 값 목록이 있습니다"를 의미합니다.

모든 변수가 항상 동일해야하는 논리입니까? 그럼 첫 번째가 더 좋습니다. 그렇지 않다면 두 번째 것이 더 나을 수 있습니다. 또 다른 질문 : 4 개의 변수 목록이 포괄적입니까? 이 그룹에 다른 변수를 추가하거나 제거 할 가능성이 있습니까? 그렇다면 대신 다른 변형을 제안합니다.

a = 5
b = 5
c = 5
d = 5

나는 한 번 그것에 물렸다. 오늘은 몇 번의 키 입력을 절약 할 수 있지만 나중에 물어볼 수 있습니다. @glenn이 언급했듯이 동일한 개체에 대한 여러 참조를 만듭니다.

예 : 이것은 루비 1.81.9

> a = b = Array.new
=> []
> a.object_id == b.object_id
=> true
> a << 1
=> [1]
> b << 2
=> [1, 2]

I don't use ruby at all, so that might be an acceptable idiom, but a = b = c = d = 5 looks pretty ugly to me. a , b, c, d = 5, 5, 5, 5 looks much nicer, IMO.

ReferenceURL : https://stackoverflow.com/questions/2929356/is-it-right-to-assign-multiple-variables-like-this-a-b-c-d-5

반응형