[ruby] Ruby를 사용하여 한 단계로 배열을 초기화하는 방법은 무엇입니까?
이 방법으로 배열을 초기화합니다.
array = Array.new
array << '1' << '2' << '3'
한 단계로 할 수 있습니까? 그렇다면 어떻게?
답변
배열 리터럴을 사용할 수 있습니다.
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]
답변
짧막 한 농담:
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'.."5"] #remember *
=> ["1", "2", "3", "4", "5"]
답변
보다 더있다 증명 한 여섯 가지 방법을 어떻게 그것은 :
plus_1 = 1.method(:+)
Array.new(3, &plus_1) # => [1, 2, 3]
1.method (: +)가 가능하지 않은 경우 다음을 수행 할 수도 있습니다.
plus_1 = Proc.new {|n| n + 1}
Array.new(3, &plus_1) # => [1, 2, 3]
물론,이 시나리오에서는 과잉이지만 plus_1
, 정말 긴 표현 이라면 배열 생성과는 별도의 줄에 배치하는 것이 좋습니다.
답변
넌 할 수있어
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
우리가 여기서 원하는 것이 아닙니다.
이것이 요점을 명확히하는 데 도움이되기를 바랍니다.
답변
이러한 배열을 만들려면 다음을 수행하십시오.
array = ['1', '2', '3']
답변
문자열 배열이있는 경우 다음과 같이 초기화 할 수도 있습니다.
array = %w{1 2 3}
공백으로 각 요소를 분리하십시오.