며칠 전이 같은 종류의 질문을했고 어떻게 든 통신이 이루어지지 않았습니다. 나는 나의 문제를 재구성하여 문제가 해결 될 수 있도록 노력하겠습니다.다른 열거 가능하지 않은 열거 가능한 클래스를 만드는 방법은 무엇입니까?
문제는 기본적으로 다음과 같습니다. 어떻게 다른 열거 형을 사용하지 않는 열거 형 클래스를 어떻게 만듭니 까? 단순화되었지만 제대로 작동하는 예제로서 다음 클래스를 고려하십시오.
class MyClass
include Enumerable
def get_next
return_val = rand.to_s
if return_val.match(/33/)
return nil
else
return return_val
end
end
def each
# ??????
end
end
이 클래스에서 get_next는 임의의 값을 계산합니다. 그런 다음, 그 값이 두 개의 3을 서로 가지면,이 메소드는 nil을 리턴합니다. 그렇지 않으면 값을 리턴합니다. 그래서 당신은 10 개 이하의 시간을 위해 일반적으로, 반복 get_next 실행할 수 있습니다 데이터 포인트의 수천을 통해 검색 get_next 현실에서
myob = MyClass.new
while not myob.get_next.nil?
puts 'got one'
end
을. 다음 항목을 찾으면 오히려 볼륨이 많은 객체를 반환합니다. MyClass 객체가 모든 항목에서 배열로 들어가는 것은 불가능합니다. 한 번에 하나씩 가져와야합니다.
실제로 클래스는 위와 같이 잘 작동합니다. 그러나이를 루비 같은 방법으로 구현하고 싶습니다.
위의 노동 계급이 주어지면 공란을 채우십시오. 이것을 열거 가능한 클래스로 만들기 위해 각() 안에 무엇이 들어가겠습니까?
['Enumerator.new'] (http://ruby-doc.org/core-2.4.2/Enumerator.html # method-c-new) - 'take (10)'호출은 처음 10 개 항목 만 리턴한다. 그러나 숫자는 무한 루프에서 산출된다. 읽는 가치 : https://blog.arkency.com/2014/01/ruby-to-enum-for-enumerator/ – Stefan