Ruby 中的字符串连接与插值

2023-11-22

我刚刚开始学习 Ruby(第一次编程),并且对变量和编写代码的各种方法有一个基本的语法问题。

Chris Pine 的《学习编程》教我编写这样的基本程序......

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

这很好,但后来我偶然发现了 ruby​​.learncodethehardway.com 上的教程,并被教导编写像这样的完全相同的程序......

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

它们都输出相同的内容,但显然选项 2 是一种更短的方法。

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


每当 TIMTOWTDI(有不止一种方法可以做到)时,您应该寻找优点和缺点。使用“字符串插值”(第二个)而不是“字符串连接”(第一个):

Pros:

  • 打字少了
  • 自动呼叫to_s for you
  • Ruby 社区中更惯用的语言
  • 在运行时更快地完成

Cons:

  • 自动呼叫to_s为你(也许你认为你有一根绳子,而to_s表示不是您想要的,并且隐藏了它不是字符串的事实)
  • 需要你使用"来分隔你的字符串而不是'(也许你有使用的习惯',或者您之前使用它输入了一个字符串,后来才需要使用字符串插值)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 中的字符串连接与插值 的相关文章

  • 如何将 stderr 和 stdout 重定向到 Ruby 脚本文件?

    如何将 stderr 和 stdout 重定向到 Ruby 脚本文件 From 在 Ruby 脚本中 您可以重定向stdout and stderr与IO reopen http ruby doc org core classes IO h
  • Rails 3.0 中的 f.error_messages

    Rails 3 0 已弃用f error messages现在需要一个插件才能正常工作 然而我想学习如何以 新的 本机方式显示错误消息 我正在关注入门指南 http edgeguides rubyonrails org getting st
  • sudo:rvm:找不到命令 - Ubuntu 12.04 服务器上的 RVM 多用户安装

    我正在设置服务器 它是 Ubuntu 12 04 首先我安装了RVM多用户 me ubuntu curl L https get rvm io sudo bash s stable 然后在安装 RVM 后 按照安装提示 我将自己添加到 RV
  • 使用 String#sum 的 Ruby Anagram

    我已经解决了一个问题 要求您编写一个方法来确定所提供的数组中的哪些单词是字谜词 并将字谜词分组到输出中的子数组中 我已经使用似乎是典型的方式解决了这个问题 即对单词进行排序并根据其排序的字符将它们分组为散列 当我最初开始寻找一种方法来做到这
  • 从delayed_job工作线程中排除队列

    在delayed jobs 中 可以为特定队列运行工作线程 我似乎找不到任何有关如何运行工作人员并排除特定队列的示例 文档 我试图让 1 名工作人员处理超高优先级的事情 1 名工作人员处理其余的事情 通过指定哪些队列与哪些工作人员相关来实现
  • 如何使用 nokogiri 解析 XML 而不丢失 HTML 实体?

    如果您查看后面部分中的输出 ruby 会删除所有 html 实体 如何使用 nokogiri 解析 XML 而不丢失 HTML 实体 BEFORE
  • Ruby lambda 的过程和“instance_eval”

    当我将 lambda 传递给instance eval作为块 它似乎传递了一个额外的参数 lamb gt puts hi proc Proc new puts hi instance eval lamb gt gt ArgumentErro
  • 在 Rails 控制器中存储对象的最佳方式(会话除外)?

    我有一个 Rails 控制器 class Controllername lt application def method1 obj API CALL session obj access token redirect to redirec
  • ruby Sequel gem - 如何使用 pg_array 扩展查询数组

    我正在使用pg array http sequel jeremyevans net rdoc plugins files lib sequel extensions pg array rb html扩展和续集版本 4 1 1 我添加了这样的
  • 无||假与假||红宝石中的零

    nil false回报false and false nil回报nil 有人对此有解释吗 在 Ruby 中 一切都是表达式 表达式将返回其中计算的最后一个值 对于您的两个示例 左侧 表达式的计算结果为假值 因此 Ruby 然后计算右侧并返回
  • Ruby 中的数组切片:不合逻辑行为的解释(取自 Rubykoans.com)

    我正在做练习鲁比 科恩斯 http rubykoans com 我对以下 Ruby 怪癖感到震惊 我发现它确实无法解释 array peanut butter and jelly array 0 gt peanut OK array 0 1
  • 如何在 Ruby 中处理大文件?

    我对编程还很陌生 所以要温柔 我正在尝试从图书馆数据库 dat 文件中提取 IBSN 编号 我已经编写了有效的代码 但它只搜索了 180MB 文件的大约一半 如何调整它以搜索整个文件 或者我如何编写一个程序将 dat 文件分割成可管理的块
  • RVM 安装问题 - 无法执行端口 (autoconf)

    我正在尝试在 OSX mountain lion 上安装 Jekyll 首先我想安装RVM 然后安装最新的ruby 但是 RVM 安装失败 我无法解决问题 任何帮助表示赞赏 这是我所做的 安装的 OSX 命令行工具 尝试安装 RVM cur
  • 是否仍然可以在 Rails 4 中使用测试单元?

    从 Rails 3 2 升级到 Rails 4 后 我的应用程序可以运行 但我用测试单元编写的测试是一场灾难 据传 Minitest 与测试单元 兼容 然而 如果我尝试使用 现在捆绑的 Minitest 就会发现有很多差异 从断言 语句名称
  • 获取类别和子类别的所有产品(rails、awesome_nested_set)

    正在开发一个电子商务应用程序 我试图解决以下问题 我通过 Awesome nested set 插件实现了我的类别 如果我通过选择一个类别列出我的文章 一切正常 但对于某些链接 我想显示一个类别的所有产品及其子类别的产品 这是仅适用于一种类
  • 如何在 Ubuntu 中使用 gems?

    我最近升级到 Ubuntu 9 04 但在使用 gems 时遇到问题 我使用 apt get 安装了 Ruby Rubygems 和 Rails 这rails命令确实有效 然后我安装了 capistrano 和其他 gem 例如 herok
  • 如何将上传的二进制文件 (ASCII-8BIT) 嵌入 XML (UTF-8) 中?

    我有一个通过常规上传的文件form for 这给了我一个ActionDispatch Http UploadedFile我可以调用的 params 哈希中的对象 read来获取内容 我现在需要将该文件嵌入到 XML 文档中 我现在使用常规
  • 登录西纳特拉?

    我无法弄清楚如何使用 Sinatra 记录消息 我不想记录请求 而是在我的应用程序中的某些点记录自定义消息 例如 当获取 URL 时 我想记录 Fetching url 这就是我想要的 指定日志级别的能力 例如 logger info Fe
  • 将用户输入转换为整数

    所以我有一个用户可以输入价格的表格 我正在尝试创建一个 before validation 来规范化数据 如果用户放置 则剪裁它 before validation do unless self price blank then self
  • 为什么这段 Ruby 代码无法写入日志文件?

    一旦脚本被守护 记录器就无法再写入文件 那么我应该如何以及何时初始化日志呢 require rubygems require daemons require logging def create new logger logger Logg

随机推荐

  • JDBI 接受 UUID 参数吗?

    当使用 SQL 对象参数绑定时 JDBI使用 UUID 参数开箱即用 我有一个这样的方法 SqlQuery EXECUTE MyProcedure myField MyDto myMethod Bind myField UUID myFie
  • Ubuntu 升级到 19.10 后 Minikube 将无法工作

    我刚刚将 Ubuntu 从 19 04 升级到 19 10 现在 Minikube 无法启动 所以 过了一段时间 我就完全删除了Minikube minikube stop minikube delete docker stop docke
  • 无法在非 Boost 版本的 Asio 中使用 asio::placeholders::error

    我正在尝试在项目中使用 Asio 的非 Boost 版本 我正在写一个回调stream protocol acceptor async accept 签名需要asio placeholders error要通过 但当我这样做时 出现以下错误
  • 如何在node.js中的“require”之后删除模块?

    比方说 在我需要一个模块并执行以下操作之后 var b require b js do something with b 然后我想拿走模块b 即清理缓存 我怎样才能做到呢 原因是我想动态加载 删除或更新模块而不重新启动节点服务器 任何想法
  • 如何更改 Visual Studio 中控制台应用程序的图标?

    我正在 VS 2008 中开发 C 控制台应用程序 无法更改图标文件 我更改了图标文件project gt properties gt application选项卡 但旧图标仍然与新版本一起显示 检查了帖子中的以下答案以修改 resx 文件
  • 导入处理/模块从 python2 更改为 python3?

    我试图遵循中所示的设计模式上一个问题与 SQLAlchemy 相关 旨在跨多个文件共享公共 Base 实例 代码与 python2 和 python3 完全相同 但是 当我在模块 称为 model 中移动文件 a py b py c py
  • Microsoft Graph 中的单引号转义

    我尝试通过 displayName 查询用户 但在通过 C SDK 和 Graph Explorer 发送请求时无法转义单引号 更新 示例中不清楚 我遇到问题的搜索词是I 查询示例 https graph microsoft com v1
  • 发生 JNI 错误。请检查您的安装

    我正在尝试使用 TestNG 运行一个非常简单的测试 但收到此错误消息 我尝试阅读之前的答案 但它对我不起作用 如果有人能帮助我 我会很高兴 因为我只是 TestNG 的初学者 这是错误消息 Exception in thread main
  • 使用 C# 从 Azure Blob 复制到 AWS S3

    请注意 这是我第一次用 C 做任何事情 所以请友善 我可能犯了一些非常基本的错误 是的 我知道我不应该对密钥进行硬编码 但当代码执行我想要的操作时会修复它 我正在尝试创建一个 Azure 函数 将所有新项目从 Blob 存储复制到 AWS
  • Quartz Cron 表达式:每 15 天运行一次,即一个月运行两次

    我想使用quartz cron 表达式设置调度程序 该表达式每 15 天触发一次 例如每月 1 日和 15 日 0 15 10 15 仅在每月 15 日触发 月 我已经测试过了 下面的表达式工作正常 0 0 0 1 15 1 15 语句在每
  • 使用 jQuery 获取多个 CSS 属性

    我知道你可以设置多个 css 属性 如下所示 element css property value property value 但是如何使用 CSS 获取多个属性呢 有什么解决办法吗 jquery css 方法 从 1 9 开始 表示您可
  • PhantomJS 单击页面上的链接

    我已经编写了 PhantomJS 应用程序的一些部分 我正在一个网站上进行解析 在该网站上我将用户名和密码写入公式 之后我必须点击一个链接 而我收到此错误 TypeError undefined is not a function eval
  • html5视频通过鼠标滚轮滚动播放

    我希望能够制作一个网页 当用户上下滚动鼠标滚轮时 可以向前和向后播放视频 这似乎是可以想象的 通过 HTML5 和可能的 JavaScript 对于此类事情的任何指导都会有所帮助 随时暂停视频 每隔一段时间获取滚动位置并使视频寻找到滚动位置
  • 在 Objective-C 中比较颜色

    我试图使用 Objective C 编写的代码来确定两种颜色是否相等 我正在使用这段代码来确定两种颜色是否相等 当前用于调试目的 NSLog currentColor is currentColor NSLog Adjacent Color
  • Gradle解压时如何压平目录结构?

    我想从战争中提取一些 jar 作为我的 gradle 2 0 构建的一部分 到目前为止我有这个 task unzip type Copy def zipFile file D external dependent war def outpu
  • HTTP 错误 500.19 和错误代码:0x80070021

    我有一个由 Visual Studio 2013 构建的简单 webAPI 当我从 VS13 运行它时 它运行良好 但是当我在本地 IIS 中复制该项目时 它会出现以下错误 HTTP 错误 500 19 内部服务器错误 请求的页面无法访问
  • 检查gdb中的模板参数包

    我正在尝试调试以下简单程序 include
  • 将行添加到具有现有列的 datagridview

    我有一个DataGridView有几个创建的列 我添加了一些行并且它们显示正确 但是 当我单击单元格时 内容就会消失 我究竟做错了什么 代码如下 foreach SaleItem item in this Invoice SaleItems
  • 在 Twitter Bootstrap 2.x 中使用 box-sizing : border-box ,我们可以在不破坏所有内容的情况下轻松做到这一点吗?

    我在最近的项目中一直在使用 border box box model 这样做的好处有很多 这里就不一一解释了 但您可以在这里阅读 css tricks 中的边框 现在我正在开始一个更大的项目 我们决定 twitter bootstrap 将
  • Ruby 中的字符串连接与插值

    我刚刚开始学习 Ruby 第一次编程 并且对变量和编写代码的各种方法有一个基本的语法问题 Chris Pine 的 学习编程 教我编写这样的基本程序 num cars again 2 puts I own num cars again to