Ruby 배열 다루기, 요소 형변환 하기

rails·2021년 11월 15일
0

Ruby 기초

목록 보기
1/2

숫자가 들어 있는 배열을 선언 하고 출력 해보기

arr = [1,2,3]
puts arr

결과

더욱 긴 배열 선언 해보기

arr = [1,2,3,4,5,6,7,8,9,10,11]
puts arr

결과

만약 1부터 100까지 선언 해야 한다면...?
자칫 노가다가 될 수 있으나 안심 하시라. ruby에서는 range를 제공 한다.

arr = (1..100).to_a
puts arr

결과

...

만약 배열 내의 모든 숫자를 문자로 변환 해야 한다면..?
단순하게 접근한다면 이렇게 될 것이다.

arr = (1..10).to_a
puts "인티저 #{arr}"
arr.each_with_index do |el, i|
  arr[i] = el.to_s
end
puts "스트링 #{arr}"

결과

결과는 잘 나오지만 뭔가 구문이 C스럽다.
더 잘할 수는 없을까?

arr = (1..10).to_a
puts "인티저 #{arr}"
arr = arr.map(&:to_s)
puts "스트링 #{arr}"

결과

조금은 루비스러워졌다.

arr = arr... 이라는 형태가 맘에 들지 않는다.

map 함수에 루비의 강력한 기능중 하나인 몽둥이(=느낌표)를 붙여보자.

arr = (1..10).to_a
puts "인티저 #{arr}"
arr.map!(&:to_s)
puts "스트링 #{arr}"

결과

만약 몽둥이가 없다면 스트링으로 된 배열이 리턴되지만 받아주는 변수가 없어서 프린트 되지 않을 것이다. (아래코드)

arr = (1..10).to_a
puts "인티저 #{arr}"
arr.map(&:to_s)
puts "스트링 #{arr}"

결과

map과 유사하지만 쿼리처럼 동작하는 select 메소드도 있다.
예를들어 배열에서 짝수만 골라서 또 다른 배열로 만들어야 한다면?

arr = (1..10).to_a
puts "원본배열 #{arr}"
arr.select!{|a| a%2==0}
puts "셀렉트결과 #{arr}"

결과

여기서도 몽둥이를 붙이는 것을 잊지 말자.
만약 원본을 유지 하면서 복제를 하고싶다면 느낌표 없이 다른 변수에 할당 하면 된다. (아래)

arr = (1..10).to_a
puts "원본배열 #{arr}"
b = arr.select{|a| a%2==0}
puts "셀렉트결과 arr #{arr}"
puts "셀렉트결과 b #{b}"

결과

profile
rails

0개의 댓글