"지도" 방법은 루비에서 무엇을 합니까?
무엇인가..map
수행 위치:
params = (0...param_count).map
그map
메소드는 열거 가능한 개체와 블록을 사용하고 각 요소에 대해 블록을 실행하여 블록에서 반환된 각 값을 출력합니다(사용자가 사용하지 않는 한 원래 개체는 변경되지 않음).map!)
:
[1, 2, 3].map { |n| n * n } #=> [1, 4, 9]
Array
그리고.Range
열거형입니다. map
With a block은 배열을 반환합니다. map!
원래 배열을 변형시킵니다.
이것이 어디에 도움이 되고, 무엇이 다른가?map!
그리고.each
다음은 예입니다.
names = ['danil', 'edmund']
# here we map one array to another, convert each element by some rule
names.map! {|name| name.capitalize } # now names contains ['Danil', 'Edmund']
names.each { |name| puts name + ' is a programmer' } # here we just do something with each element
출력:
Danil is a programmer
Edmund is a programmer
map
와 함께select
그리고.each
내 코드에 있는 루비의 일꾼 중 하나야.
이를 통해 어레이의 각 개체에 대해 작업을 실행하고 모든 개체를 같은 위치에 반환할 수 있습니다.예를 들어 숫자 배열을 하나씩 증가시키는 것입니다.
[1,2,3].map {|x| x + 1 }
#=> [2,3,4]
어레이의 요소에서 단일 메소드를 실행할 수 있는 경우 다음과 같은 간단한 스타일로 실행할 수 있습니다.
위의 예를 사용하여 이 작업을 수행하려면 다음과 같은 작업을 수행해야 합니다.
class Numeric def plusone self + 1 end end [1,2,3].map(&:plusone) #=> [2,3,4]
앰퍼샌드 바로 가기 기술을 보다 간단하게 사용하려면 다음과 같은 다른 예를 사용합니다.
["vanessa", "david", "thomas"].map(&:upcase) #=> ["VANESSA", "DAVID", "THOMAS"]
Ruby에서 데이터를 변환하는 것은 종종 다음과 같은 단계를 수반합니다.map
작전공부map
&select
그것들은 주 라이브러리에서 가장 유용한 루비 방법들 중 일부입니다.그들은 중요한 만큼이나each
.
(map
의 별칭이기도 합니다.collect
개념적으로 가장 적합한 것은 무엇이든 사용하십시오.)
더 유용한 정보:
실행 중인 Enumerable 개체의 경우each
또는map
에는 Enumerable 요소(해시, 배열) 집합이 포함되어 있으며 블록 파이프 내에서 다음과 같이 각 요소를 선언할 수 있습니다.
[["audi", "black", 2008], ["bmw", "red", 2014]].each do |make, color, year|
puts "make: #{make}, color: #{color}, year: #{year}"
end
# Output:
# make: audi, color: black, year: 2008
# make: bmw, color: red, year: 2014
해시의 경우(또한Enumerable
객체, 해시는 단순히 인터프리터를 위한 특별한 명령이 있는 튜플 배열입니다.첫 번째 "파이프 매개변수"는 키이고 두 번째는 값입니다.
{:make => "audi", :color => "black", :year => 2008}.each do |k,v|
puts "#{k} is #{v}"
end
#make is audi
#color is black
#year is 2008
실제 질문에 대한 답변:
라고 가정하면params
해시이므로 이를 통해 매핑하는 것이 가장 좋습니다. 해시의 각 해석 튜플에 대한 키 및 값 쌍을 캡처하려면 하나 대신 두 개의 블록 매개 변수를 사용하십시오.
params = {"one" => 1, "two" => 2, "three" => 3}
params.each do |k,v|
puts "#{k}=#{v}"
end
# one=1
# two=2
# three=3
시각화가 필요한 모든 사용자:
전체 내용은 다음과 같습니다.
https://richstone.io/rubys-map-collect-methods-explained-visually/
루비 2.4를 사용하여 동일한 작업을 수행할 수 있습니다.transform_values
레일에서 루비로 추출된 이 특징.
h = {a: 1, b: 2, c: 3}
h.transform_values { |v| v * 10 }
#=> {a: 10, b: 20, c: 30}
0..param_count
"최대 및 param_count 포함"을 의미합니다. 0...param_count
"최대이지만 param_count를 포함하지 않음"을 의미합니다.
Range#map
을 .Enumerable
실제로 배열에 매핑됩니다.은 같다니습과 Range#to_a
.
수를각매항 "핑합에"의 각 를 ".Enumerable
이 경우 범위입니다.부터 0까지의 마다 한 합니다.param_count
각 반환 값이 포함된 배열을 반환합니다.
다음은 에 대한 설명서입니다.가명도 있어요collect
.
#each
#each
배열의 각 요소에 대해 함수를 실행합니다.다음 두 코드 발췌는 동일합니다.
x = 10
["zero", "one", "two"].each{|element|
x++
puts element
}
x = 10
array = ["zero", "one", "two"]
for i in 0..2
x++
puts array[i]
end
#map
#map
배열의 각 요소에 함수를 적용하여 결과 배열을 반환합니다.다음은 동등합니다.
array = ["zero", "one", "two"]
newArray = array.map{|element| element.capitalize()}
array = ["zero", "one", "two"]
newArray = []
array.each{|element|
newArray << element.capitalize()
}
#map!
#map!
는 것과 같은#map
배열을 수정합니다.다음은 동등합니다.
array = ["zero", "one", "two"]
array.map!{|element| element.capitalize()}
array = ["zero", "one", "two"]
array = array.map{|element| element.capitalize()}
맵은 열거 가능 모듈의 일부입니다."collect"와 매우 유사합니다. 예:
Class Car
attr_accessor :name, :model, :year
Def initialize (make, model, year)
@make, @model, @year = make, model, year
end
end
list = []
list << Car.new("Honda", "Accord", 2016)
list << Car.new("Toyota", "Camry", 2015)
list << Car.new("Nissan", "Altima", 2014)
p list.map {|p| p.model}
맵은 블록 매개 변수에 의해 반환되는 배열을 통해 반복되는 값을 제공합니다.
언급URL : https://stackoverflow.com/questions/12084507/what-does-the-map-method-do-in-ruby
'programing' 카테고리의 다른 글
다음 SDK 구성 요소의 라이센스 계약에 동의하지 않았습니다. (0) | 2023.06.06 |
---|---|
SQL Server에 열 추가 (0) | 2023.06.06 |
특정 iPhone/iPod Touch 모델 탐지 (0) | 2023.06.06 |
SSL 오류 루비젬 설치 시 'https://rubygems.org/ 에서 데이터를 가져올 수 없습니다. (0) | 2023.06.06 |
postgresql information_schema에 모든 테이블 나열 (0) | 2023.06.06 |