soc*_*soc 27
您可以通过访问Simply Scala获得第一印象,在那里您可以获得在线翻译.
一个绝对经典的Scala for Java Refugees最初是为来自Java的人编写的,但考虑到C#/ Java的基础知识有多么相似,对你很有帮助.
您不需要首先学习Java,但是您需要安装和运行Java运行时/开发工具包.
然后访问http://www.scala-lang.org/downloads并为您的操作系统下载相应的软件包(我总是喜欢Scala的每晚版本,它们比最新的稳定版本有更多的错误修复).
之后,运行Scala REPL,它基本上是"Simply Scala offline"(Simply Scala也使用了Scala REPL).甚至许多Java程序员也首先使用Scala REPL来创建原型.
如果您更喜欢书籍,我可以推荐Martin Odersky的Scala编程(第2版)(如果您从语言设计的角度出发并想要"参考书").还有其他像"Programming 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
Run Code Online (Sandbox Code Playgroud)
我不是那么流利的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
Run Code Online (Sandbox Code Playgroud)
您不需要先学习Java.你熟悉函数式编程吗?如果你是,你应该能够很快地跳进去.无论如何,这里有一些关于如何学习Scala的想法:
获得一本好的参考书.我推荐Odersky,Spoon和Venners编写Scala编程.我发现它是最全面的Scala书之一.
与学习任何新语言一样,尝试使用Scala编写几个小应用程序.如果你不是一个功能程序员,你可以用不同的范例编程,但现在没问题.尝试编写程序而不使用"var,(使用val代替)"而不是使用循环,并最大限度地减少状态变化.
使用sbt来构建你的程序.我有点犹豫要推荐这个,因为你必须学习一个新的工具来编写你的程序.但我觉得用Scala编写应用程序也很棒.许多Scala项目似乎都使用sbt.
另外,请查看此评论和整个帖子,以帮助您转换到Scala.在迁移到Scala时,反对Java形成的习惯
Java作为一种语言不一定以scala开头(而且无论如何java本身与c#非常相似,或者实际上它是相反的......).但是,一旦你开始使用scala进行高效工作,你将会与许多java库进行交互,并了解java-world是一个更广泛的标准库,而不是.net-world,其中有很多您需要的东西直接在标准的.NET库中.你可以随时学习它们,但不是来自java背景,经验可能会让人感到压力.如果你开始学习java,那将是同样的事情....你可能需要学习的其他特定于Java的东西是关于泛型在JVM中的功能要小得多,以及scala如何解决这个问题.
至于scala本身作为一种来自.NET的语言,你可以从阅读函数式编程的一些东西而不是学习java中获益更多.功能范例是我最初对scala方法最无知的部分,这使我在从scala网站上找到的资源中理解示例代码时遇到的麻烦最多.
建立基础
学习斯卡拉
归档时间: |
|
查看次数: |
7822 次 |
最近记录: |