2013-06-01 104 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

這將是對隱式轉換的濫用,因爲它侵蝕了類型安全 –