放入一个字符串并在同一行中调用方法

时间:2016-07-25 21:08:04

标签: ruby

我有一个名为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

但这不起作用,因为我无法通过调用方法来插入字符串。

2 个答案:

答案 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}"