我刚刚开始学习Ruby(首次编程),有一个关于变量的基本语法问题,以及编写代码的各种方法.

Chris Pine的"学会编程"教我写一个这样的基本程序...

num_cars_again= 2
puts 'I own ' + num_cars_again.to_s + ' cars.'

这很好,但后来我偶然发现了关于ruby的教程.莱恩考德赫德威.com,并被教导编写与此相同的程序...

num_cars= 2
puts "I own #{num_cars} cars."

它们都输出相同的东西,但显然选项2是一种更短的方法.

有什么特别的原因让我应该使用一种格式而不是另一种格式吗?

推荐答案

每当TIMTOWTDI(有不止一种方法)出现时,你应该寻找利弊.使用"字符串插值"(第二个)而不是"字符串串联"(第一个):

Pros:

  • 她打字少了
  • 自动为你呼叫to_s
  • 在Ruby社区中更加惯用
  • 在运行时更快地完成

Cons:

  • 自动为你呼叫to_s (maybe you thought you had a string, and the to_s representation is not what you wanted, and hides the fact that it wasn't a string)
  • 要求您使用"来分隔字符串,而不是'(可能您有使用'的习惯,或者您以前使用'键入了一个字符串,后来才需要使用字符串插值)

Ruby相关问答推荐

如何用 yield_self 断链

Rb:仅通过在 Ruby 中的类上添加 each 方法,可枚举模块是如何工作的?

当没有传入块时,是否有更好的方法来防止屈服?

each_with_object 应该如何工作?

Integer(value) 和 value.to_i 之间的区别

Ruby 中的字符串是可变的吗?

无法在 OSX Lion 上使用 RVM 安装 Ruby 企业版

hash['key'] 到 Ruby 中的 hash.key

如何在控制台中禁用 MongoDB 日志(log)消息?

为什么整数除法在许多脚本语言中舍入?

有没有办法在 RSpec 中取消存根?

Ruby - 在模块/类之间共享记录器实例

文字数字中的下划线是什么意思?

如何在 Ruby 中遍历多行字符串?

计算文件中的行数而不将整个文件读入内存?

纯 Ruby 并发哈希

Ruby 中的自然语言处理

Ruby:define_method 与 def

如何重命名 gemset?

如何在 Ruby 中将时间四舍五入到最接近的 15 分钟?