2017-12-17 28 views
-2

허용되는 사용자 입력 숫자의 범위를 설정하려고합니다. 그런 다음 선택한 수를 제곱하고 입방체로 인쇄하고 싶습니다.선택한 숫자를 범위, 제곱 및 큐브 안에 삽입하십시오.

class Range 
    def clamp(min, max) 
    self < min ? min : self > max ? max : self 
    end 
end 

class Multiply 
    def initialize(id, squared, cubed) 
    @id  = num 
    @squared = (num * num) 
    @cubed = (num * num * num) 
    end 
end 

# @limit = (params[:limit] || 10).clamp(0, 100) 

puts 'Please insert your favorite number between 1 and 100.' 
num = gets.to_i 
puts 'You picked ' + num.to_s + '?' 
puts 'You picked ' + num.to_s.Multiply.squared + '?' 

@limit'params' not found를 던졌습니다 :

나는 다음 시도했다.

RangeMultiply을 통해 numputs까지 실행하려면 어떻게해야합니까?

+4

질문 당 하나의 질문을하십시오. 왜 params는 정의하지 않았을 때 발견 될까요? 또한, "내 수업을 모두 통해 내 num 변수를 실행"전혀 분명하지 않습니다, 당신이 실제로 원하는 일을 진술하십시오. 너는 무엇을 얻고 싶니? 클램프 된 숫자의 제곱? 세제곱 숫자의 클램프? – Amadan

+2

['Range'] (http://ruby-doc.org/core-2.4.2/Range.html)가 Ruby에 내장 된 핵심 수업 중 하나임을 알고 있습니까? – Stefan

답변

1

내가 '허용'사용자가 번호를 입력의 범위를 설정하기 위해 노력하고, 그럼 내가 선택한 수의 제곱과 세제곱 것을 인쇄 할 .

Comparable 모듈을 통해 Numericclamp 방법을 사용할 수를 사용

input = '110' 
clamped = input.to_i.clamp(0,100) 

puts clamped 
#100 

당신은 Integer#** 또는 Float#**와 숫자의 힘을 얻을 수 있습니다. 핵심 클래스를 확장하여 DIY 메서드를 생성해야하는 경우 clamp, squarecube 메서드를 정의하여 Numeric 클래스를 확장 할 수 있습니다. square 일 수 있습니다 :

class Numeric 
    def square 
    self ** 2 
    end 
end 

10.square #=> 100