2010-06-27 5 views
4

변수 a, b, c 및 d 모두 'foo'로 설정해야합니다.변수 할당

하나의 급습 과제에서이를 수행 할 수있는 방법이 있습니까? 마찬가지로 :

A, B, C, D = 'foo는'

답변

14

참조 귀하의 모든 변수 공통 값을 필요에 따라 다음과 같이 할 this

가장 좋은 방법

a= b= c = d = 'foo' 

당신이 할 수있는 다른 가치를 위해서

+5

또한 : 'a, b, c, d = [ "foo"] * 4' –

3

나는 Ruby가 일반적인 유형의 같은 연쇄 할당 :

a = b = c = d = 'foo' 
+24

이것은 메모리의 동일한 실제 문자열에있는 모든 변수를 가리 키므로주의하십시오. 그래서 만약 당신이 'a.reverse'를했다면 a, b, c, d는 모두 'oof'가됩니다. – PreciousBodilyFluids

+0

+1 중요한 경고 – allesklar

0
a = b = c = d = 'foo' 

반드시 그것을 할 ... 올바른 방법 당신은 약간에게 이상한 방법을 원하는 경우 : {foo는}w

a,b,c,d = %w{foo}*4 

(퍼센트를 foo, * 4이 포함 된 문자열 배열을 반환하므로 문자열이 foo 인 배열을 4 회 포함 할 수 있습니다. 쉼표로 구분 된 여러 변수 이름을 배열)을 할당하는

0

이것은 안전한 방법으로 보인다

a, b, c, d = 4.times.map{'foo'} 

이것은 유사하며 조금이라도 짧은 :

a, b, c, d = (1..4).map{'foo'} 

그것은있을 수도 배열 승수 나 연결 할당을 사용하는 것보다 오래 걸리지 만 동일한 객체에 대한 다른 참조가 아닌 실제로는 다른 객체를 얻습니다.

확인 코드 : object_id들 같은 경우

[a,b,c,d].map(&:object_id) 

, 당신의 변수가 같은 객체를 참조하고, 뮤 테이터 방법 (예를 들어, sub!)는 4 개 변수가 표시되는 내용에 영향을 미칠 것입니다. 서로 다르다면 다른 사람에게 영향을 미치지 않고 하나를 돌연변이시킬 수 있습니다.