생산하다

6339 단어 methodsrubybeginners

소개



초보 루비스트로서 당연하게 생각하는 많은 것 중 가장 당연하게 여겼던 개념은 코드 블록과 yield 키워드인 것 같습니다. 나는 doend가 열거형, 조건문 및 형식의 고유한 부분이라고 가정했습니다.

사실, 우리는 우리 자신의 방법에서 이러한 코드 블록을 활용할 수 있고 키워드 yield 로 액세스할 수 있습니다.

수익률이란?


yield는 기본 제공 Ruby 키워드입니다. 모든 Ruby 키워드 목록을 찾을 수 있습니다here.
yield가 해석되면 메서드를 직접 계승하는 코드 블록의 실행이 시작됩니다.

def execute_block
   yield
end

execute_block { puts "Hello" } 
"Hello"
#=> nil

execute_block do
   2 + 2
end 
#=> 4


위의 예에는 주어진 코드 블록을 단순히 실행하는 메서드가 있습니다. yield 키워드가 히트하면 메서드가 일시 중지되고 블록이 실행됩니다. 블록의 결과가 메서드에 반환되고 실행을 계속할 수 있습니다.

이제 블록 & yield 의 기본 아이디어를 보았으므로 멋진 구현을 살펴보겠습니다.

성능 시험



사용자 지정yield 메서드의 일반적인 용도는 메서드 또는 코드 블록을 성능 테스트할 때입니다.

def speedtest
    t1 = Time.now
    result = yield
    t2 = Time.now
    puts t2 - t1
    result
end


이 방법은 블록 실행 전후에 타임 스탬프가 필요합니다. 런타임을 찾은 다음 코드 블록의 결과를 반환하는 데 그 시간의 차이가 필요합니다.

speedtest { 1 + 1 }
1.0e-06
=> 2

speedtest { [1, 1].reduce(:+) }
3.0e-06
=> 2


맞춤형 조건부 흐름



우리만의 조건부 흐름을 만들어 봅시다:

def allow_if_true(method, false_message)
    return false_message unless yield
    method
end


이 방법을 사용하여 method 의 실행을 제한하여 주어진 블록이 true 를 반환하는 경우에만 실행되도록 합니다.

allow_if_true(top_secret_internet_stuff, "Access Denied") do
   session[:username] == "Bill Gates"
end


이제 우리는 인터넷의 모든 깊고 어두운 비밀을 안전하게 지킬 수 있습니다. 해커들을 잡아라!

열거하는 것은 어떻습니까?



재미있는 사실: 매개변수를 yield ! 각자 유사한 열거자를 만들어 사용하는 방법을 살펴보겠습니다.

def do_stuff_to(arr)
   return "not an array!" unless arr.class == Array
   count = 0
   while count < arr.length
      yield arr[count]
      count += 1
   end
   arr
end


이 간단한 구현으로 우리는
  • 먼저 unless를 사용하여 올바른 데이터 유형이 있는지 확인합니다.
  • while 루프 및 count를 사용하여 배열을 반복합니다.
  • 끝에 원래 배열을 표시합니다.

  • do_stuff_to([1, 2, 3]) do |i|
       puts i ** 2
    end
    1
    4
    9
    #=> [1, 2, 3]
    

    |i| 눈치채셨나요? yield에 값을 전달할 때 블록의 파이프 표기법으로 선언하여 값이 있음을 나타냅니다. 내장된 열거 가능한 메서드와 마찬가지로 yield에 전달된 각 값에 대한 매개 변수가 있습니다.

    폐쇄



    솔직히 말해서 이 시점에서 사용자 지정yield 방법이 일상적인 개발에 얼마나 유용한지 모르겠습니다. 그러나 적어도 이것이 이 개념을 이해하는 데 도움이 되길 바라며, 이러한 개념이 등장했을 때 어떤 일이 일어나는지 더 편안하게 알 수 있기를 바랍니다.

    건배!

    좋은 웹페이지 즐겨찾기