优雅地将字符串放在同一行

时间:2015-07-04 15:25:06

标签: ruby

我需要puts一个像

这样的字符串
puts "#{movie.title}, #{movie.imdb_rating.round(3)}, #{movie.imdb_ratings_count}"

因此输出将为Gone Girl, 8.23, 302532

然而,由于我总是需要添加#{}""

,这些都非常繁琐。

快速puts有什么好方法,而不是总是添加#{}""

4 个答案:

答案 0 :(得分:3)

我建议使用join方法构建数组。

def printStrings do *strings
    strings.join(', ')
end

printStrings 'apple', 'banana', 'orange' #'apple, banana, orange'

或者,您可以使用一个称为输出字段分隔符的特殊变量,您可以将其作为$,进行访问。 (其默认值为nil

$, = ', '
print 'apple', 'banana', 'orange' #'apple, banana, orange'
$, = nil

此方法在print

的文档中列出

答案 1 :(得分:3)

将一个方法添加到Movie类是有意义的:

class Movie
  def to_desc
    "#@title, #{@imdb_rating.round(3)}, #@imdb_ratings_count"
  end
end

答案 2 :(得分:2)

LukeP的答案很好,如果你想在每个值之间使用相同的标点符号,但如果你想要一些不同格式的东西,例如Gone Girl - 8.23,302532,你可以使用ruby的%运算符进行字符串格式化:

"%s - %s, %s" % [movie.title, movie.imdb_rating.round(3), movie.imdb_ratings_count]

答案 3 :(得分:1)

Ruby的印刷很扎实,但并不令人惊讶。你看过Awesome Print宝石了吗?

https://github.com/michaeldv/awesome_print

这是我用来做优雅打印的方法。有点不清楚你要求如何格式化它,但这个宝石似乎会给你足够的选择来解决你的问题。