2017-04-23 72 views

回答

1

Ruby需要(大约)字符串是相同类型的,就像大多数合理的编程语言一样。

您有1个解决方案。

"word" + 12.to_s"word #{12}"

第二个例子是所谓的串插,并调用方法.to_s传入任何对象。

+1

这并非明确如此。 'ruby'通过定义'to_str'确实提供了对'String'的隐式转换。例如'类Fixnum; alias_method:to_str,:to_s; end',然后是“Word”+ 12#=>“Word12”**(不推荐用于教诲)**。同样'Numeric'利用'coerce'出于类似的原因,例如'class String; def coerce(other); [other,self.length]; end; end;'then'12 +'ABC'#=> 15 ** **(同样简单的熏染)** – engineersmnky

6

可能的方式来混合字符串和整数

这取决于你想怎么做:

["worda", 10].join(', ') 
"worda, #{10}" 
"worda, %d" % 10 
"worda" + ", " + 10.to_s 
"worda" << ", " << 10.to_s 

全部返回"worda, 10"

join和字符串插值将隐式地调用.to_s

字符串+整数

"worda" + 10 

是一个TypeError,但是,因为有一个与+的隐式转换。

否则​​可以是"12"3。 JavaScript接受它并返回“12”,这是一个混乱恕我直言。

字符串< <整数

最后:

"worda, " << 10 

是一个有效的Ruby语法,但其附加的ASCII码10(换行),而不是数字10:

"worda, \n" 
+1

也可以在这里提到mutators。 – Ilya

+0

@engineersmnky:在看过Ilya的评论后我加了''''。 –

+0

@EricDuminil(没有什么兴趣提到胁迫'胁迫'和隐式转换'to_str','to_int'等等:))我们也可能像Javascript(我同意它有点混乱) – engineersmnky

0

是的,但你可以做

"worda, wordb, #{num_1}, wordc, #{num_2}," 
相关问题