Day08 - Ruby比一比:String的+=与concat串接
前情提要:
在第七天我们透过比较Symbol和String,发现字串比符号多了更多方法!为了活用string method,今天我们接续前文,来探讨一题跟字串有关的题目:
Ruby经典面试题目#08(leafor)
+=和concat有什么不同?What’s difference between concat and +=?
concat是英文concatenate的缩写,意思是串接(link things together in a chain or series.)我们想知道的是:串接完之后,仍然会指向同一个物件(使用同一个內存位置)吗?
要解答此一问,必须使用前一篇所使用的印出內存位置方法.object_id。
我们来创造一个属于第八天的、指向第八天的字串物件的变数tingsmessage:
tingsmessage =“This is my 8th article!”
p tingsmessage.object_id
內存位置在:
47023721077820
第八天呢!新的一周开始,值得欢呼一下:
tingsmessage.concat“Yay!”
p tingsmessage
p tingsmessage.object_id
印出来的结果,仍是在第八天的位置欢呼唷:)
This is my 8th article!Yay!
47023721077820
如果用+=方法呢?
tingsmessage +=“Plus One Everyday!”
p tingsmessage
p tingsmessage.object_id
加了+=每天都加一篇这段叙述,结果內存位置随着+方法而改变了:
This is my 8th article!Yay!Plus One Everyday!
47358398608700
按照第七天文章的结论,读取相同內存位置不会变来变去,时间耗费短,因此concat方法较省时。+ or .concat,what is faster for appending string in Ruby?这篇文章的作者已经在ruby帮我们做了一个串接string的benchmark实验,非常有趣。
提到了concatenation串接,通常会和interpolation插入拿来一起谈。
如果我们在明天、想要调整第9天的message呢(xcsjbj)?
换汤不换药,其实大部分的信息字串都是一样的,只是天数改变,所以我们可以设一个整数变数tingsironmanday,将数字Number转为字串String,利用刚刚学的+方法串再一起:
tingsironmanday = 9
p“I've written”+ tingsironmanday.to_s +“articles!”
# =>“I've written 9 articles!”
interpolation概念,就是#{}大括号包住数字变数,此方法自动会帮我们转换数字为字串,让代码更简洁,可读性更高。:)
p“I've written #{tingsironmanday} articles!”
# =>“I've written 9 articles!”
从今天举的例子们可以发现在ruby里实作的功能,总是会有不同的写法,让我们可以根据情况选择适合自己最佳的使用时机,这些设计是不是很聪明呢?
Day08 - Ruby比一比:String的+=与concat串接的更多相关文章
- String类的concat()方法
String类的concat()方法: public class MyClass { public static void main(String[] args) { String str1=&quo ...
- Ruby语言学习系列--String 类函数
函数名称 说明 示例 * 将字符串拷贝N次 “ha”*4 >> “hahahaha” + << concat 连接字符串 “yes” + “no” >& ...
- Ruby字符串(1):String基本用法
String字符串 字符串由String类提供,除了直接使用单双引号或其它字面量创建字符串,也可以使用String.new()方法来创建. a = "hello" b = Stri ...
- Ruby字符串(2):String方法详细整理
String方法整理 官方手册 类方法 new new(str="") → new_str new(str="", encoding: enc) → new_s ...
- 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)
3.5.2 字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就 ...
- (string find) 亲和串 hdu2203
亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- hdu 3336:Count the string(数据结构,串,KMP算法)
Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- string查找字符(串)
在C语言中 strchr 和 strstr函数都被包含在<string.h>头文件中,也就是要调用它们时要在程序前面包含<string.h>头文件,也就是写这个语句:#incl ...
- Day07 - Ruby比一比:Symbol符号与String字串
前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...
随机推荐
- P1041 传染病控制(dfs)
P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...
- javaweb开发大致流程
- connected standby
参考链接 https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby http ...
- Mysql 数据库复制
Mysql 数据库复制 数据库复制是一种同步手段,主库向一台或多台数据库同步数据. 这个功能我自己曾经用uts数据传输工具实现过! 现在学习了一下mysql数据库复制的其他方式 第一个就是最简单的使用 ...
- Unity Post-Processing的一些分享
讲些什么? 绝大多数的游戏或多或少都会使用些后处理效果. 早期版本中,Unity在提供的接口有限,优化空间不大,属于放任自流.官方推出了Post-Processing(下文简称PP)并在Github上 ...
- MVC动态赋值的td选中,获取当前的td的ID或者值
前台绑定数据: <div class="mailbox-content"> <table class="table"> <tbod ...
- redmine2.5升级到3.4
第一.安装需要升级的版本 参考文档:https://www.cnblogs.com/panwenbin-logs/p/10174525.html 二.备份源数据 [root@localhost ~]# ...
- 微信小程序报错:id 属性值格式错误。如不能以数字开头。
出现这个报错时,相信很多人都排除过自己标签上写的id是否有以数字命名的,如果你排除了发现并没有,但是这个报错还是存在,那么我接下来分享的这个情况或者能报到你 这次我也遇到这个报错,最终找出问题所在 这 ...
- Oracle表空间不足;查询表空间使用率(unable to extend lob segment SYS_LOB0000076749C00006$$ by 8192 in tablespace USERS)
查询表空间对应地址 *),) total_space from dba_data_files order by tablespace_name; //方案一:修改表空间大小(32000可改为想要的数值 ...
- eShopOnContainers 看微服务③:Identity Service
引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠. 在微服务场景中,身份认证通常统一处理.一般有两 ...