2016-07-25 42 views
0

我有一个叫做Fractions的类,它带有一个分子和分母。它有三种方法 - 压缩,红色压缩,分解 - 分别打印出分数,简化版本和小数形式。 作为一个例子,如果分子是12和分母为4,我要打印出来的结果作为这样:放一个字符串并在同一行中调用一个方法

分数:12/4
减少分数: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
降低分数:
分数为十进制:
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添加到一个字符串中,这是不可能的。

要使用字符串插值,你可以做这样的:

puts "Fraction: #{a.frac}" 

你也可以这样做:

puts "Fraction: " + a.frac.to_s 

哪个相加,然后

前Fixnum对象转换为字符串

分别对缩减版本和小数形式做同样的处理。

有关更多信息,请参阅https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation(RubyMonk对字符串插值也有很好的解释,但似乎已停用)。

+0

无论这些工作的,他们都打印出 '''/3 馏分:减少分数: 5.0 分数为十进制: ''' – SMW

+0

@SMW除非'inspect'产生相同的结果为'to_s',你可能会得到稍微不同的结果。字符串插值使用'to_s'方法,但是'irb'使用'inspect'。 – tadman

+1

第三种方法:'puts“分数:%s”%a.frac.to_s'。 – tadman

相关问题