gpt4 book ai didi

scala - 如何开始使用 scala

转载 作者:行者123 更新时间:2023-12-03 11:33:57 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我是 .NET 开发人员,我想稍微拓宽我的视野,在检查了现代趋势之后决定尝试 Scala。你能建议一个好的策略来开始它吗?我应该先学习Java吗?我应该阅读什么资料或手册?是否有任何操作系统项目可以练习 Scala 并在其上成长?

谢谢,
多米尼克

最佳答案

您可能会通过访问 Simply Scala 获得第一印象有在线口译员的地方。

绝对经典是Scala for Java Refugees它最初是为来自 Java 的人编写的,但考虑到 C#/Java 的基础知识有多么相似,这对你很有帮助。

您不需要先学习 Java,但您需要安装并运行 Java 运行时/开发工具包。

那就去http://www.scala-lang.org/downloads并为您的操作系统下载适当的软件包(我总是更喜欢 Scala 的夜间构建,它们比最新的稳定版本修复了更多错误)。

之后,运行基本上是“Simply Scala 离线”的 Scala REPL(Simply Scala 也在幕后使用 Scala REPL)。甚至许多 Java 程序员首先使用 Scala REPL 来制作原型(prototype)。

如果你喜欢看书学习我可以推荐Programming in Scala (2nd edition) Martin Odersky (如果您从语言设计的角度出发并想要“引用书”)。还有一些像《Scala 编程》这样的书更适合初学者,但我个人觉得《Scala 编程》非常棒,并且只用那本书就学会了 Scala。

启动 Scala 的一个好方法是使用集合类。 .NET 最近添加了一些与 LINQ 和扩展方法类似的东西,因此很容易为您学习。

一个让你开始的小例子:

//Define a class with some properties
case class Person(name: String, var age: Int, spokenLanguages: String*)

//Create some persons
val joe = Person("Joe", 42, "English","French","Danish")
val doe = Person("Doe", 23, "English","German")
val don = Person("Don", 11, "Italian","French","Polish")
val bob = Person("Bob", 17, "German")

//Access a property
joe.name

//Don had his 12th birthday!
don.age = 12

//Put the persons into a list
val persons = List(joe, doe, don, bob)

//Divide the list into minors and adults
val (minors, adults) = persons.partition(_.age < 18)
//Get the total age of all persons
val personsTotalAge = persons.map(_.age).sum
//Return a list with only those speaking English
val englishSpeakers = persons.filter(_.spokenLanguages.contains("English"))
//Same as the example above.
val englishSpeakers2 =
for{ person <- persons
language <- person.spokenLanguages
if language == "English"
} yield person

我对 C# 不是很流利,但我相信很多事情可能看起来与您相似。

Scala 的 XML 支持的一些示例:
//The shoppingCart for breakfast
val shoppingCart = <list>
<item><name>Tomatoes</name><price>0.30</price><amount>4</amount></item>
<item><name>Eggs</name><price>0.15</price><amount>10</amount></item>
<item><name>Bread</name><price>2.20</price><amount>1</amount></item>
</list>

//How much does it cost?
val total = (shoppingCart \ "item").map(i => (i \ "price").text.toDouble * (i \ "amount").text.toDouble).sum

//This is a Symbol
val sym = 'SomeSymbol

//I'm too lazy to use Strings for XML! (Example for implicits)
implicit def symbol2string(symbol: Symbol) = symbol.name

//Now I can use Symbols too!
val total = (shoppingCart \ 'item).map(i => (i \ 'price).text.toDouble * (i \ 'amount).text.toDouble).sum

关于scala - 如何开始使用 scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5405872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com