예를 들어 f
함수를 5 번 호출하고 결과 목록을 가져 오려고합니다.함수를 여러 번 호출하고 결과 목록을 얻으십시오.
(1..5).to_a.map!{f}
참고 : 지금은 이것을 가지고 지금 f
더 입력을지지 않습니다 및 true
또는 false
을 반환하는 함수입니다. 따라서이 작업이 끝나면 5 true
/false
값의 목록을 얻습니다.
예를 들어 f
함수를 5 번 호출하고 결과 목록을 가져 오려고합니다.함수를 여러 번 호출하고 결과 목록을 얻으십시오.
(1..5).to_a.map!{f}
참고 : 지금은 이것을 가지고 지금 f
더 입력을지지 않습니다 및 true
또는 false
을 반환하는 함수입니다. 따라서이 작업이 끝나면 5 true
/false
값의 목록을 얻습니다.
5.times.collect { f }
가 (매개 변수를 가정하지 기능 내장이 사용하는 다른 작업을 수행하는 더 좋은 방법은 (아마도 reduce
? 난 그런 생각을했지만, 그것을 사용하는 방법을 알아낼 수 없습니다 ...)이있다. map
collect
별칭이다. 더 소통 보이지만 YMMV)
내가 대신 (1..5)
의 5.times
더 이상을 선호하는 나는 실제로 수집 이름 collect
을 선호합니다. 이것은 또한 더 의사 소통하는 것 같습니다 : 나는 "범위를 반복"하지 않는다, 나는 "무언가를 5 번하고있다".
IMO 내가 실제로 collect
을 5 번 실행하지 않기 때문에 약간 반 직관적이지만, collect.5.times { f }
은 작동하지 않으므로 어쨌든 우리는 약간의 정신 게임을합니다.
당신이 제로 기반 증가 인수하려면 Array 생성자의 블록 형태를 시도해보십시오
Array.new(5) {|x| (x+1).to_f} # => [1.0, 2.0, 3.0, 4.0, 5.0]
Array.new(10) { rand } # => [0.794129655156092, ..., 0.794129655156092]
당신은 단지 to_a
을 넣어하지 않음으로써 코드를 단축 할 수있다 (1..5)는 그래서 열거 지도와 함께 작동합니다. 당신이 원하는 경우 블록
(1..5).map!{f}
Array.new(10) { f }
인덱스 값을 사용할 수 있습니다 그것은 :
Array.new(10) { |i| f(i) }
[로 ab 잠금]을 선택하면 지정된 크기의 배열이 만들어집니다. 이 배열의 각 요소는 요소의 인덱스를 지정된 블록에 전달하고 반환 값을 저장하여 만들어집니다.
이것은 at least 1.8.7부터 가능합니다.
와우 ... 어떻게 그리워 했니! 감사합니다 @ 데이브 뉴턴, 정확히 내가 무엇을 찾고 있었는지. – trh178