2013-04-15 4 views
0

일부 Ruby를 연습하기 위해 콘솔 기반 계산기를 만들려고합니다. 'case'문을 사용하여 콘솔 인수를 확인한 다음 Ruby 산술을 사용하여 결과를 해석하고 반환합니다.문자열이 '*'와 같은지 검사하십시오.

내가 가진 문제는 루비가 곱셈과 관련된 줄을 실행할 수 없다는 것입니다. 단순히 'else'블록으로 가서 내 도움 방법을 실행합니다. 나는 (나는 확실하지 않다 어떻게 그 단어) 나는 루비는 '모든'과 STAR 문자를 취급하고 가정 내가 수정 계획 내가 마음에, 사기 베어 보이는 알고

case @args[1] 
when '+' 
    puts "#{@args[0].to_i + @args[2].to_i}" 
when '-' 
    puts "#{@args[0].to_i - @args[2].to_i}" 
when '*' 
    puts "#{@args[0].to_i * @args[2].to_i}" 
when '/' 
    puts "#{@args[0].to_i/@args[2].to_i}" 
when '%' 
    puts "#{@args[0].to_i % @args[2].to_i}" 
when '**' 
    puts "#{@args[0].to_i**@args[2].to_i}" 
else 
    help 
end 

을 지수를 제외한 모든 다른 방법이 일단 모든 일을하면됩니다.

나는, 나는 당신이 확신

... 숙제 그래서 내가 루비이 간단 별과하지 정규 표현식을 처리하도록해야 할 일을 100 % 확실하지 않다 루비에 상당히 새로운되지 오전 나는 최근에 레일스를 배우기 시작하면서 루비를 배우려고 노력하고 있습니다.

+2

추측 해 보자 : 당신은'ruby yourscript.rb 2 * 2'와 같은 쉘에서 이것을 실행하고 있는가? 그런 다음 쉘은 '*'을 [glob] (http://en.wikipedia.org/wiki/Glob_ (프로그래밍))으로 처리하고 스크립트에 도달하기 전에 확장합니다. – hammar

+0

아, 네가 정확히 네가 말하는 것을 본다. "./clk 5 * 8"나는 zsh에서 그걸 피하는 방법에 대한 연구를 할 것입니다. 고마워. 편집 : 쉘에서 \ *를 사용하여 이스케이프 처리했습니다. 이 질문을 고려하십시오. 해결 된 –

답변

1

'\ *'을 (를) 사용하여 별표를 이스케이프 처리해 보셨습니까?

+0

아, 알겠습니다. 나는 지금 그것을 시험 할 것입니다. 편집 : 그 작동하지 않았다, 비록 제안을 주셔서 감사합니다. –

+0

쉘에서 *를 이스케이프 처리 할 때 작동합니다. –

+0

아, 나는 그것을 놓쳤다. 함 마가 자리에 있었어. – AgilE

0

다른 문제가 있습니다. @args[1] 실제로 당신이 생각하는 것을

str = '*' 
=> "*" 
>> case str 
>> when '*' then "foo" 
>> end 
=> "foo" 

번 확인 :이 IRB 세션은 경우 문에서 문자열이 예상대로 작동하는지 확인합니다.

+0

고마워요.하지만 사실 내 껍데기가 내 질문의 추천 섹션에서 '망치'로 언급 한 * 기호를 망쳐 놨습니다, 고마워요. –

+0

당신이 실제로하고 싶은 것은'case' 문이 아니라'calculator.send @args [1], @args [0], @args [2]'와'calculator '# +'와'# *'와 같은 객체 메쏘드가 있는데, 문에서 'NoMethodError'를 잡아내는 모든 것이 그것입니다. –

관련 문제