我有一个名为Fractions的类,它带有分子和分母。它有三种方法 - 压裂,redfrac,dec-分别打印出分数,缩小版本和小数形式。 例如,如果分子为12且分母为4,我想打印出结果:
分数:12/4
降低分数:3
分数为十进制:3.0
我的Fractions类之后的当前代码如下
a = Fractions.new(numer, denom)
puts "Fraction:"
a.frac
puts "Reduced Fraction:"
a.redfrac
puts "Fraction as a Decimal:"
a.dec
打印出来
分数:
12/4
降低分数:
3
分数为十进制:
3.0
如何根据需要打印文字?我试着做了
puts "Fraction:" + a.frac
但这不起作用,因为我无法通过调用方法来插入字符串。
答案 0 :(得分:2)
"Fraction:" + a.frac
没有使用字符串插值 - 它使用+运算符并尝试将一个Fixnum添加到字符串中,这是不可能的。
要使用字符串插值,您可以这样做:
puts "Fraction: #{a.frac}"
你也可以这样做:
puts "Fraction: " + a.frac.to_s
在将Fixnum添加到一起之前将其转换为字符串
分别对缩小版和小数版执行相同的操作。
有关详细信息,请参阅https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation(RubyMonk也对字符串插值有很好的解释,但似乎已关闭)。
答案 1 :(得分:0)
您无法与+
运算符进行字符串连接,因为a.frac
的返回值不是字符串。
您可以使用.to_s
将其显式转换为字符串并更改您的行:
puts "Fraction:" + a.frac.to_s
或者,您可以像这样使用Ruby的字符串插值:
puts "Fraction: #{a.frac}"