[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}

공백으로 각 요소를 분리하십시오.