배열의 Ruby 출력 내용을 쉼표로 구분 된 문자열 Ruby


79

배열의 내용을 쉼표로 구분 된 문자열로 출력하는 더 정확한 방법이 있습니까?

@emails = ["joe@example.com", "Peter@example.com", "alice@example.com"]

@emails * ","

=> "joe@example.com", "Peter@example.com", "alice@example.com"

이것은 작동하지만 더 우아한 솔루션이 있어야한다고 확신합니다.


9
사실, 결과가 될 것입니다"joe@example.com,Peter@example.com,alice@example.com"
앙드레 Figueiredo의

3
혼란 스럽습니다. 무엇이 우아하지 array_name * ","않습니까?
M. 저스틴

답변:


187

이것을 시도해 보셨습니까?

@emails.join(",")

22
join은의 별칭 *이므로 OP의 질문을 반복하는 것입니다.
Jörg W Mittag

1
그러나 join확실히 이해하기 쉽습니다.
Henrik

12

OP와 많은 답변은 배열에 항상 내용이 있음을 암시하지만 때때로 "빈"요소 (일반적으로 UI에 대한 데이터 연결)를 포함 할 수있는 목록에 가입해야하는 경우가 있습니다.

다음은 이러한 "불완전한"문자열 배열을 처리하는 방법에 대한 약간의 "진보"입니다.

['a','b','',nil].join(',') # => "a,b,," 
['a','b','',nil].compact.join(',') # => "a,b,"
['a','b','',nil].compact.reject(&:empty?).join(',') # => "a,b"
['a','b','',nil].reject(&:blank?).join(',') # Rails only

마지막은 내가 가장 좋아하는 (Rails) 접근 방식입니다.


2

를 사용하여 ERB 템플릿에서 비슷한 작업을 수행해야했습니다 AllowedUsers <%= _allowed_users.join(" ") %>. 찾고있는 것만 큼 우아하지 않을 수도 있지만 여러 언어에서 본 것과 동일한 구현이므로 가독성 측면에서 승리 할 수 ​​있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.