2016-07-25 3 views
0

私は分子と分母を取り入れたFractionsというクラスを持っています。これには、frac、redfrac、decの3つのメソッドがあります。それぞれ、小数部、縮小版、小数点を出力します。分子が12であり、分母が4である場合 は、一例として、私はその結果をプリントアウトしたい:文字列を入れて同じ行にメソッドを呼び出す

フラクション:12/4
削減フラクション:10進数として3
フラクション:3.0

を出力
a = Fractions.new(numer, denom) 

puts "Fraction:" 
a.frac 
puts "Reduced Fraction:" 
a.redfrac 
puts "Fraction as a Decimal:" 
a.dec 

を次のように私の分画クラスの後に私の現在のコードがある

分数:
12/4
削減分数:10進数として
フラクション:私はそれをしたいと私はテキストを印刷するにはどうすればよい
3.0

?私はしようとしました

puts "Fraction:" + a.frac 

しかし、私は方法の私の呼び出しで文字列を補間することはできませんので、これは動作しません。

+0

'irb'がスクリプトの実行時にRubyが出力するものと混同しないでください。 'irb'ツールは[REPL](https://en.wikipedia)として実行されます。org/wiki/Read-eval-print_loop)実際に印刷するかどうかにかかわらず、あなたが指定した文ごとに結果を出力します。どちらもこれらの作業の – tadman

答えて

0

戻り値a.fracは文字列ではないため、+演算子との文字列連結を実行できませんでした。

あなたが明示的に.to_sで文字列に変換し、あなたの行を変更することができます:

puts "Fraction:" + a.frac.to_s 

か、あなたはこのようにRubyの文字列補間を使用することができます。

puts "Fraction: #{a.frac}" 
2

"Fraction:" + a.fracは、文字列の補間を使用していません - +演算子を使用していて、FixnumをStringに追加しようとしていますが、これは不可能です。

は、文字列の補間を使用するには、このようにそれを行うことができます。

puts "Fraction: #{a.frac}" 

また、これを行うことができます:一緒に

を追加する前に、文字列にFixnumかに変換

puts "Fraction: " + a.frac.to_s 

それぞれ縮小版と小数書式で同じ操作を行います。

詳細については、https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolationを参照してください(RubyMonkは文字列補間についての説明もありますが、下にあるようです)。

+0

、それらの両方がプリントアウト ' 15/3 分画: 5削減フラクション:inspect'は同じ生成 ' – SMW

+0

@SMW 'ない限り:10進数として 5.0フラクション'to_s'という結果になると、少し異なる結果になるかもしれません。文字列補間は 'to_s'メソッドを使いますが、' irb'は 'inspect'を使います。 – tadman

+1

第3の方法: 'puts '分数:%s"%a.frac.to_s'。 – tadman

関連する問題