Enumerable에 all?
이라는 메소드가 있습니다.내 모든 것을 쓰려고합니까? Ruby의 메소드
저는 Enumberable의 라이브러리를 직접 작성하여 배우려고합니다.
이것은 all?
메소드에 대해 지금까지 제가 제시 한 것입니다. 나는 그것을 이해할 수 있지만 초기화 된 값을 메서드에 전달하려고 할 때 난처한 상황에 처하게됩니다. 기록에 대한
편집, 나는 내가 가진 열거 방법은 올바른 방법으로 즉하지 것을 알고 있어요, 그것은 하드 코딩 된 배열입니다. 이것은 자기 학습 목적을위한 것입니다. 난 그냥 초기화 된 값을 전달하는 방법을 알아 내려고 애 쓰고있다 내 모두? 방법. 그래서 열심히 노력하고 있는지 확인하기 위해 열거 형을 쓴 이유입니다. 이 계급을 문자 그대로의 복음으로 삼지 마십시오. 고맙습니다.
class LearningMethods
def initialize(values)
@values = values
end
def enum
array = [10, 3, 5]
end
def all?(a)
yield(a)
end
end
c = LearningMethods.new([10, 3, 5])
p c.enum.all? {|x| x >= 3 } #this works
p c.all?(10) { |x| x >= 3 } #this works
p c.all?(@values) { |x| x >= 3 } #this doesn't work. Why not? And how do I pass the initialized values?
*이 방법은 * 작동하지 않습니다. 여기서 여러 가지 일이 잘못 될 수 있습니다. 보여준 코드에서'@ values'는 실패 행에서 사용중인 범위에 정의되어 있지 않습니다. – lurker
코드에 문제가 너무 많습니다. 나는 그들을 지적하는 것이 도움이 될 지 확신하지 못합니다. Enumerable을 다시 구현하기 전에 클래스, 블록 및 출력량의 기본 사용법을 읽어야합니다. – Max
직접 작성하는 대신, 실제로 방법이 쓰여지는 방법을 실제로보고하는 것이 좋습니다. 자유롭게 사용할 수있는 Ruby의 소스 코드를 탐색하거나 http://ruby-doc.org로 이동하여보고 싶은 방법을 "클릭하여 소스 전환"링크를 클릭하면됩니다. 일부는 Ruby에서 구현되고 다른 일부는 C로 구현되지만, 어떤 방식 으로든 그 방식을 볼 수 있습니다. –