我的代码是:
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测试正常工作。
任何帮助都将不胜感激。
答案 0 :(得分:2)
当您在控制台(例如irb
或pry
)中运行代码时,您会看到每个行/方法的检查响应被执行。
例如,请尝试以下操作:
> puts "hello\nworld"
hello
world
> "hello\nworld"
=> "hello\nworld"
> puts "hello\nworld".inspect
"hello\nworld"
此行为是控制台的一个有意义的,有价值的功能。它允许您轻松区分不同类型的空格(制表符,空格,换行符,回车符......);它允许您区分变量类型(字符串与整数等);它允许您查看非打印字符,例如不间断的空格;等等。
上面的代码运行正常。 \n
是新的换行符。
唯一的问题"是您在控制台中以转义形式(\n
)显示它。
如果您在控制台中打印响应,您将看到以正常方式显示换行符:
> account = Account.new
> puts account.statement