[英]Is lack of 3rd party libraries preventing you using Scala?
我前幾天開始學習Scala。 至於語言本身,我認為這很棒,沒有任何問題。 為了幫助我學習過程,我為自己設置了一個任務,從HTML頁面下載,解析和索引文本。
在執行上述操作時,我發現自己不斷深入研究現有的Java庫。 我發現我必須使用Java庫來:
1)打開連接 - java.net.URL
2)解析HTML(TagSoup - 因為普通的XML解析器不能處理最糟糕的HTML)
3)索引文本(Lucene)
鑒於我不得不依靠Java庫來完成相當多的繁重工作,我不知道是否值得我使用Scala開始,除了作為一個學習練習。 這部分是由於需要一些額外的心理努力才能在兩者之間進行映射,例如,字體[]的Scala類型不是直觀明顯的,因為Scala中的所有東西都是對象。 這是額外的心理處理,可以使這個過程看起來有點笨重。
是否有人認為較少的第三方庫(與Java相比)是在商業項目中使用Scala的障礙?
如果你可以調用現有的Java庫,那么它是否重要,或者在代碼庫中不得不跨越兩種不同的語言會讓它變得更難?
我不太關心你的看法。 Java庫通常是.jar文件(壓縮的.class文件集)。 你期望Scala庫是什么? 好吧,它將是一組壓縮的.class文件。 兩種語言都編譯為Java字節碼! 那么,回答你的問題:
是否有人認為較少的第三方庫(與Java相比)是在商業項目中使用Scala的障礙?
不,不是真的。
如果你可以調用現有的Java庫甚至是重要的,或者在代碼庫中不得不跨越兩種不同的語言會讓它更難嗎?
如果您將java庫看作已編譯的.jar文件,則不必跨越兩種不同的語言。
編輯:當然,Scala有一個非常豐富的類型系統,編譯類文件無法充分利用。 相反,Java字節碼格式的大量有用庫可能使Scala比其他新的(現代閱讀)語言更具吸引力。
我推薦這篇文章(和模式):
每當Java庫的接口在Scala中有點麻煩時,這是一種使它更方便,代碼更優雅的好方法。 這是一個非常簡單的例子。 我想在我的代碼中一直使用Scala XML pretty打印機來返回格式良好的XML。 這是正常的方法:
class Service {
val pp = new scala.xml.PrettyPrinter(80,2)
def content =
pp.format(<foo><bar>{something()}</bar></foo>)
}
但是,因為我一直這樣做,所以我將它添加到我的包中
import scala.xml.Elem
object PrettyXml {
val pp = new scala.xml.PrettyPrinter(80,2)
}
trait PrettyXml {
case class Formatted(xml:Elem) {
def pretty = PrettyXml.pp.format(xml)
}
implicit def toFormatted(xml:Elem) = Formatted(xml)
}
現在我可以用我的原始代碼替換
class Service extends PrettyXML {
val pp = new scala.xml.PrettyPrinter(80,2)
def content =
<foo><bar>{something()}</bar></foo> pretty
}
如果我不想讓它成為一個特性,我可能會把PrettyXML放在一個包對象中。
這實際上並不像看起來那樣愚蠢和誤導一個問題。 關於Scala庫的一些事實:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.