加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何开始scala

发布时间:2020-12-16 09:44:53 所属栏目:安全 来源:网络整理
导读:我是.NET开发人员,我想扩大我的视野,并检查现代趋势后,决定尝试Scala。你能不能建议一个很好的策略呢?我应该先学习Java吗?我应该读什么来源或手册?有没有任何操作系统项目来练习Scala并在其上成长? 谢谢, 多米尼克 解决方法 您可以通过访问 Simply S
我是.NET开发人员,我想扩大我的视野,并检查现代趋势后,决定尝试Scala。你能不能建议一个很好的策略呢?我应该先学习Java吗?我应该读什么来源或手册?有没有任何操作系统项目来练习Scala并在其上成长?

谢谢,
多米尼克

解决方法

您可以通过访问 Simply Scala获得第一印象,您可以使用在线翻译。

一个绝对的经典是Scala for Java Refugees,它最初是为来自Java的人编写的,但对于您来说将是非常有帮助的,考虑到C#/ Java的基础知识是如何相似的。

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

然后去http://www.scala-lang.org/downloads并下载适合您的操作系统的软件包(我总是喜欢Scala的夜间版本,他们比最新的稳定版本有更多的bug修复)。

之后,运行Scala REPL,它基本上是“Simply Scala offline”(Simply Scala也使用了Scala REPL)。即使是许多Java程序员也使用Scala REPL来初始化事物。

如果你喜欢书籍学习,我可以推荐Programming in Scala (2nd edition) by 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,"German")
val don = Person("Don",11,"Italian","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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读