로 설계 객체에서 최종 결과를 반환하는 방법 :나는이 운동을하고있는 중이 야 체인 방법
- 이 운동을하려면, 당신은 아마
return self
을 사용해야합니다. 메서드가 자체적으로 반환되면 메서드를 연결할 수 있습니다. - 다음 함수가있는
MathDojo
이라는 루비 클래스를 개발하십시오 : 더하기, 빼기. 이 두 가지 함수가 적어도 하나의 매개 변수를가집니다.MathDojo.new.add(2).add(2, 5).subtract(3, 2)
은0+2+(2+5)-(3+2)
을 수행하고4
을 반환해야합니다. 내 코드 반환, 지금class MathDojo def initialize @sum = 0 end def add(*numbers) numbers.inject(@sum) { |sum, number| sum + number } self end def subtract(*numbers) numbers.inject(@sum) { |sum, number| sum - number } self end end
:
이 코드가
MathDojo.new.add(2).add(2, 5).subtract(3, 2)
# => #<MathDojo:0x0000000160b0c0>
어떻게 객체 대신 개체 자체의 인스턴스 변수를 반환합니까? 나는 self
에 반환을 제거하면, 방법은 더 이상 체인, 나는 하나의 메소드를 호출 할 수 있어요하지만 다음 체인이 예상대로 작동 있도록
MathDojo.new.subtract(2,3)
# => -5
가 어떻게 내 코드를 수정합니까를?
내 의견에 대한 하향 투표는 나 자신의 질문에 답하는 데 필요한 평판 아래 놓았 기 때문에 편집해야했습니다. 내 사과.
숫자를 배열에 삽입하기 전에 배열을 평평하게해야했습니다. 그런 다음 attr_accessor를 추가하여 클래스 외부에서 사용하기 위해 합계를 수집합니다.
return self
나는 다음을 입력하여 코드를 수정 JBH의 대답 같이 : 나는 또한 읽고 자기의 묵시적 수익을 변경 내가 추가 수정 및 포함하는 방법을 빼기 다음
attr_accessor :sum
before my initialize method
평평하게 부르심 :
JBH 또한 내 체인 방법에 .sum 추가 가리 켰을 때, 다음
@sum = numbers.flatten.inject(@sum) { |sum, number| sum + number }
@sum = numbers.flatten.inject(@sum) { |sum, number| sum - number }
:
puts math1 = MathDojo.new.add(2).add(2, 5).subtract(3, 2).sum
한 가지 더, 사람들은 curmudgeony가 stackoverflow에있는 문제 해결 자 - 사람이 될 수있는 방법에 대해 이야기하고 오늘 저는 그것을 경험했습니다. 분명히 루비에 대해 처음 알았습니다. (제 2 일 밖에 걸리지 않았 음을 명심해야했습니다.) 제 질문에 대한 형식이 맘에 들지 않았기 때문에 2 점을 뽑아 내 평판을 가져야했습니다. 편집하다.
이의 끝에서 호출해야 합 방법을 만들 수 있습니다. 나는 합계가 주입 된 배열을 평평하게 할 필요가있었습니다. – user1821396
의도적으로 체인 연결에 대한 질문에 답변합니다.당신이 격렬한 행사를하고있을 때, 나는 당신을 망치고 싶지 않을 것입니다. – jbh