2013-03-06 21 views
2

floatToIntBitsintBitsToFloat是Java的Float類中的方法。斯卡拉是否有這些功能?Scala是否有floatToIntBits和intBitsToFloat方法?

+2

你知道你可以將Java類/方法導入到Scala中嗎? – 2013-03-06 23:42:49

+0

@OliCharlesworth是的。我做。我可以將所有Java導入到Scala中:但我們有兩種語言。 – learner 2013-03-06 23:56:40

+0

然後我不確定你在問什麼。 'Float'是一個庫(包)中的一個類;你可以自由導入該類/包。 – 2013-03-06 23:59:29

回答

5

由於Scala是一種JVM語言,因此您可以訪問您正在使用的任何Java運行時的任何和所有功能。這是在JVM之上運行的所有語言的特徵,這就是爲什麼它非常受歡迎(JRuby,Clojure等)

您可能必須明確聲明您要訪問Java Float類型的靜態方法,因爲Scala也有一個Float類,但除此之外你應該沒問題。

java.lang.Float.floatToIntBits() 

換句話說,Scala沒有理由實現它,因爲Java已經做到了。如果您需要該功能,因爲它已經存在於Java中,那麼只需使用Java實現。

關於你的澄清意見:

Integer.parseInt是在Integer類與String作爲其輸入一個靜態方法,而Scala的toInt是提取整數的字符串以外的許多不同類的實例普遍採用的實例方法表示。他們只是在很寬鬆的意義上「做」相同的事情;使用String作爲Integer.ParseInt的輸入或者撥打toIntString將達到相同的結果,但它們不是相同的東西,所以它不是一個很適合的比較。從設計角度和整體看語言,他們暴露了兩種截然不同的界面。有一些重疊,我們可以在字符串特定的情況下看到,但在一般情況下,DRY哲學在這裏非常有用,因爲絕對不需要Scala來重新實現像floatToIntBits

+0

與'Integer.parseInt'的比較是爲了闡明'functional'的含義;它並不是要表達一種「上」的關係。你的'DRY'解釋是好的,但是這不好意思,爲什麼Scala重新定義'List'而不是使用Java的LinkedList或者Java的List接口(你會發現其他的例子)。同樣,您的答案意味着「不,Scala不重新定義該功能」。而且由於我搜索並找不到任何,你似乎知道斯卡拉,你必須是正確的。 – learner 2013-03-07 00:45:03

+0

@learner Scala重新實現了列表,因爲底層結構/迭代器是不同的,因此它們可以更容易地以功能方式使用。 – 2013-03-07 01:20:54

1

Scala可以從Java使用它們。

scala> java.lang.Float.floatToIntBits(1.0f) 
res0: Int = 1065353216 

scala> java.lang.Float.intBitsToFloat(1) 
res1: Float = 1.4E-45 
相關問題