首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在scala中将Int添加到字符串

在scala中将Int添加到字符串
EN

Stack Overflow用户
提问于 2013-02-11 15:51:51
回答 1查看 535关注 0票数 2

我在理解以下几段scala代码背后的基本原理时遇到了一些问题:

我们都知道在REPL中1+1=2。

代码语言:javascript
运行
复制
scala> 1 + 1
res0: Int = 2

如果我输入"Abc“+ "Def",我应该在REPL中得到"AbcDef”。

代码语言:javascript
运行
复制
scala> "Abc" + "Def"
res6: java.lang.String = AbcDef

现在假设我对字符串"Abc“调用+方法,并将"Def”作为参数传递:

代码语言:javascript
运行
复制
scala> "Abc".+("Def")
res7: java.lang.String = AbcDef

按照同样的逻辑,为什么像1.+(1)这样的东西会返回double 2.0?

代码语言:javascript
运行
复制
scala> 1.+(1)
res1: Double = 2.0

另外,为什么将参数"1“作为参数传递会导致"1.01”,如下所示:

代码语言:javascript
运行
复制
scala> 1.+("1")
res9: String = 1.01

为什么返回的结果是一个字符串,而不是对我来说"1“的结果转换为调用者类型?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 16:05:51

如果你在Scala 2.10.0上尝试,你会得到答案的线索:

代码语言:javascript
运行
复制
scala> 1.+(1)
<console>:1: warning: This lexical syntax is deprecated.  From scala 2.11,
             a dot will only be considered part of a number if it is immediately
             followed by a digit.
       1.+(1)
       ^

简单地说,1.在Scala中是一个有效的Double (就像在Java中一样),所以Scala真正做到了这一点:

代码语言:javascript
运行
复制
1.  +  (1)

也就是说,在包含在(冗余)括号内表达式中插入Double加法。

至于后者,Scala遵循Java约定,任何添加到String中的内容都会生成String,反之亦然。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14807919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档