programing

"지도" 방법은 루비에서 무엇을 합니까?

starjava 2023. 6. 6. 00:23
반응형

"지도" 방법은 루비에서 무엇을 합니까?

무엇인가..map수행 위치:

params = (0...param_count).map

map메소드는 열거 가능한 개체와 블록을 사용하고 각 요소에 대해 블록을 실행하여 블록에서 반환된 각 값을 출력합니다(사용자가 사용하지 않는 한 원래 개체는 변경되지 않음).map!):

[1, 2, 3].map { |n| n * n } #=> [1, 4, 9]

Array그리고.Range열거형입니다. mapWith 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]

어레이의 요소에서 단일 메소드를 실행할 수 있는 경우 다음과 같은 간단한 스타일로 실행할 수 있습니다.

  1. 위의 예를 사용하여 이 작업을 수행하려면 다음과 같은 작업을 수행해야 합니다.

    class Numeric
      def plusone
        self + 1
      end
    end
    [1,2,3].map(&:plusone)
    #=> [2,3,4]
    
  2. 앰퍼샌드 바로 가기 기술을 보다 간단하게 사용하려면 다음과 같은 다른 예를 사용합니다.

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

반응형