2013-06-01 68 views
29

我搜索了一会儿这个问题的答案,但空出来了。 将整型变量X转换为字符串的简单命令是什么?我怎样才能投入整数字符串在斯卡拉?

+9

从技术上讲,你不行。铸造只是对不同但兼容类型价值的重新解释。如果投射到比静态已知类型的值更通用的类型,它总是成功。如果将其转换为值*可能具有的类型,但不会被编译器拒绝,并且该值被转换为的类型既不是超类型也不是静态已知类型的子类型,则它可以动态失败。 “内部”与“字符串”属于后一类。 –

+0

将问题短语的正确方法是“我如何将* Int转换为Scala中的字符串?”我可以想象问题的来源:在Java中,整数不是对象,因此您需要其他一些机制来执行转换。在Scala中,* everything *是一个对象(yay!),所以你不需要这种特殊的机制。 toString是将* anything *转换为String的方式。 – AmigoNico

回答

53

如果你有Int类型的变量x,你可以调用它的toString得到它的字符串表示。

val x = 42 
x.toString // gives "42" 

这给你的字符串。当然,您可以在任何Scala“东西”上使用toString - 我将避免使用加载的object这个词。

+1

如果您认为问题得到解决,您应该标记接受的答案。 –

+0

@janm如何指定基数? – Sohaib

+0

@Sohaib x.toHexString或f“$ x%x”,x.toOctalString或f“$ x%o” - 请参阅https://docs.oracle.com/javase/6/docs/api/java/util/ Formatter.html#detail – danio

4

它够简单吗?

scala> val foo = 1 
foo: Int = 1 

scala> foo.toString 
res0: String = 1 

scala> val bar: java.lang.Integer = 2 
bar: Integer = 2 

scala> bar.toString 
res1: String = 2 
0

我认为这个简单的例子在Int上调用toString方法是最好的解决方案,但是很高兴知道Scala为这类问题提供了更一般和非常强大的机制。

implicit def intToString(i: Int) = i.toString 

def foo(s: String) = println(s) 

foo(3) 

现在你可以把诠释,因为它是字符串(并用它作为方法的参数需要字符串),你所要做的一切就是定义你int转换成字符串的方式。

+0

这将是对隐式转换的滥用,因为它侵蚀了类型安全 –