이 방법으로 배열을 초기화합니다.
array = Array.new
array << '1' << '2' << '3'
한 단계로 할 수 있습니까? 그렇다면 어떻게?
array = Array.new << 1 << 2 << 3
)
1
하면 '1'
됩니다.
이 방법으로 배열을 초기화합니다.
array = Array.new
array << '1' << '2' << '3'
한 단계로 할 수 있습니까? 그렇다면 어떻게?
array = Array.new << 1 << 2 << 3
)
1
하면 '1'
됩니다.
답변:
배열 리터럴을 사용할 수 있습니다.
array = [ '1', '2', '3' ]
범위를 사용할 수도 있습니다.
array = ('1'..'3').to_a # parentheses are required
# or
array = *('1'..'3') # parentheses not required, but included for clarity
공백으로 구분 된 문자열 배열의 경우 Percent String 구문을 사용할 수 있습니다 .
array = %w[ 1 2 3 ]
Array.new
각 항목의 값을 결정 하기 위해 블록을 전달할 수도 있습니다.
array = Array.new(3) { |i| (i+1).to_s }
마지막으로 위의 다른 답변과 동일한 세 문자열 배열을 생성하지는 않지만 Ruby 1.8.7+에서 열거자를 사용하여 배열을 만들 수 있습니다. 예를 들면 :
array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]
to_a
( [*'1'..'3']
) 보다 더 선호합니다 .
Array[ "1","2","3"] #=> ["1","2","3"]
(이 메서드는 배열 리터럴 생성자와 관련이 없다고 생각합니다). 최상위 Kernel # Array를 사용할 수도 있습니다 (메서드 이름은 클래스 이름처럼 보입니다)Array(1..5) #=> [1,2,3,4,5]
짧막 한 농담:
array = [] << 1 << 2 << 3 #this is for fixnums.
또는
a = %w| 1 2 3 4 5 |
또는
a = [*'1'..'3']
또는
a = Array.new(3, '1')
또는
a = Array[*'1'..'3']
[1,2,3]
단일 초기화 를 하는 것과 달리 세 가지 메서드를 호출하고 배열을 점진적으로 증가시키기 때문에 추측하고 있습니다 . 또한 당신은 더 많은 캐릭터입니다. 또한 OP가 문자열 배열에 대해 묻는 동안 Fixnum 배열을 만들었습니다.
위의 답변과 함께 이것도 할 수 있습니다.
=> [*'1'.."5"] #remember *
=> ["1", "2", "3", "4", "5"]
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
..
넌 할 수있어
array = ['1', '2', '3']
다른 사람들이 언급했듯이 다음과 같이 % w 표기법으로 배열을 초기화 할 수도 있습니다.
array = %w(1 2 3)
또는
array = %w[1 2 3]
두 경우 모두 각 요소는 정수가 아닌 문자열입니다. 따라서 요소가 정수인 배열을 원하면 각 요소를 아포스트로피로 래핑하지 않아야합니다.
array_of_integers = [1, 2, 3]
또한 요소 사이에 쉼표를 넣을 필요가 없습니다 (이 % w 표기법없이 배열을 만들 때 필요함). 이 작업을 수행하면 (나는 종종 실수로 수행했습니다),
wrong_array = %w(1, 2, 3)
요소는 세 개의 문자열 ---- "1,", "2,", "3"입니다. 따라서 다음과 같이하면됩니다.
puts wrong_array
출력은 다음과 같습니다.
1,
2,
3
=>nil
우리가 여기서 원하는 것이 아닙니다.
이것이 요점을 명확히하는 데 도움이되기를 바랍니다.
%w
루비 배열의 표기법으로 간단하게 할 수 있습니다 .
array = %w(1 2 3)
배열 값 1,2,3을 배열에 추가하고 출력을 다음과 같이 인쇄합니다. ["1", "2", "3"]