programing

Ruby에서 범위로 배열을 채우는 올바른 방법

instargram 2023. 6. 11. 10:18
반응형

Ruby에서 범위로 배열을 채우는 올바른 방법

저는 "to_a" 방법을 사용하여 범위가 동등한 배열로 변환되는 예를 제공하는 책을 검토하고 있습니다.

irb에서 코드를 실행하면 다음과 같은 경고가 표시됩니다.

 warning: default `to_a' will be obsolete

to_a를 사용하는 올바른 대안은 무엇입니까?

어레이를 범위로 채울 수 있는 다른 방법이 있습니까?

스플랫을 사용하여 범위가 있는 배열을 만들 수 있습니다.

>> a=*(1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

사용.Kernel Array방법,

Array (1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

또는 to_a를 사용합니다.

(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

이것은 irb에서 나에게 효과가 있습니다.

irb> (1..4).to_a
=> [1, 2, 3, 4]

다음과 같은 것을 알 수 있습니다.

irb> 1..4.to_a
(irb):1: warning: default `to_a' will be obsolete
ArgumentError: bad value for range
        from (irb):1

그래서 아마도 당신은 괄호를 놓치고 있는 것이 아닐까요?

(Ruby 1.8.6 패치 레벨 114를 실행하고 있습니다.)

당신이 하는 것처럼 들리네요.

0..10.to_a

경고는 범위 #to_a가 아니라 Fixnum#to_a입니다.대신 사용해 보십시오.

(0..10).to_a

확인:

a = [*(1..10), :top, *10.downto( 1 )]

다음과 같은 방법이 방법은 다음과 같습니다.

irb> [*1..10]

=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

저는 더 큰 양에서 더 작은 양까지 사용하려고 노력했고 예상치 못한 결과를 얻었습니다.

irb(main):007:0> Array(1..5)
=> [1, 2, 3, 4, 5]
irb(main):008:0> Array(5..1)
=> []

이는 범위 구현 때문입니다.
그래서 저는 다음 옵션을 사용해야 했습니다.

(1..5).to_a.reverse

언급URL : https://stackoverflow.com/questions/191329/correct-way-to-populate-an-array-with-a-range-in-ruby

반응형