如何在ruby return语句中创建换行符

时间:2017-10-30 14:17:25

标签: ruby

我的代码是:

require 'date'

class Account
  attr_reader :date, :balance

  def initialize
    @balance = 0
    @date = DateTime.now.strftime "%d/%m/%Y"
    @transaction = ["date  ||  credit  ||  debit  ||  balance", "#{@date} ||  #{@credit}  ||  #{@debit}  ||  #{@balance}"]
  end

  def statement
    return @transaction.join("\n")
  end
end

我想调用account = Account.new然后调用account.statement以在@transaction数组中的两个语句之间产生换行符。

代码按原样打印"\n",而不是转换为换行符。如果我使用puts而不是return,它会有效,但我需要使用return才能使我的RSpec测试正常工作。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

当您在控制台(例如irbpry)中运行代码时,您会看到每个行/方法的检查响应被执行。

例如,请尝试以下操作:

> puts "hello\nworld"
hello
world

> "hello\nworld"
  => "hello\nworld"

> puts "hello\nworld".inspect
"hello\nworld"

此行为是控制台的一个有意义的,有价值的功能。它允许您轻松区分不同类型的空格(制表符,空格,换行符,回车符......);它允许您区分变量类型(字符串与整数等);它允许您查看非打印字符,例如不间断的空格;等等。

上面的代码运行正常。 \n 是新的换行符。

唯一的问题"是您在控制台中以转义形式(\n显示它。

如果您在控制台中打印响应,您将看到以正常方式显示换行符:

> account = Account.new
> puts account.statement