要不要再学学下面的文章?
Scala 3 不再支持 XML 了吗? (insights.thoughtworks.cn)
前段时间,我为Scala 3提出了XML字面量语法提案,在社区中正在讨论。这个提案可能预示着 Scala 3、Scala.js和Binding.scala的未来前景。为什么这么说?还得先聊聊Scala目前在编程语言界的江湖地位是怎么来的。
by @Thoughtworks 2019-07-08 16:47 查看详情
Scala入门到精通——第三十节 Scala脚本编程与结束语 (yq.aliyun.com)
本节主要内容 REPL命令行高级使用 使用Scala进行Linux脚本编程 结束语 1. REPL命令行高级使用 在使用REPL命令行时,有时候我们需要粘贴的代码比较大,而普通的粘贴可能会些一些问题,比如中文粘贴会出现乱码、多行代码粘贴时会出错,此时需要用到REPL的高级功能。
by @幸运的猫耳 2018-06-26 17:44 查看详情
Scala快速入门-5-类定义 (zhuanlan.zhihu.com)
系列文章:

Scala快速入门系列:声明变量、控制结构与函数、常用数组操作

Scala快速入门-4-常用映射和元组操作



知识点

每个类都有一个主构造器,这个构造器和类的定义“交织”在一起,它的参数直接成为类的字段,主构造器执行类体中所有的语句
类中的字段自动带getter和setter方法
用@BeanProperty注解生成JavaBean的getXxx/setXxx方法
辅助构造器是可选的,它们都叫做this
类定义

定义及使用
by @极乐小程序商店 2018-01-11 11:16 查看详情
Scala快速入门系列:声明变量、控制结构与函数、常用数组操作 (zhuanlan.zhihu.com)
Scala快速入门-1-声明变量

背景

因为Spark是由Scala开发的,所以在开发Spark应用程序之前要对Scala语言学习。虽然Spark也支持Java、Python语言,但是作为一名Java程序猿,还是决定要学习Scala哈。
Scala是运行在JVM上一门语言。开发效率非常高、语法丰富简洁,三两行Scala代码能搞定Java要写的一大坨代码。
Scala的语法糖太甜~~
Scala特性

面向对象特性
by @极乐小程序商店 2018-01-03 14:52 查看详情
IntelliJ-IDEA-Mavne-Scala-Spark开发环境搭建 (zhuanlan.zhihu.com)
背景

几乎所有编程语言的第一个程序都是 Hello World。
下载并安装JDK、Scala、Maven

之前的Hadoop HA 和 Spark集群的文章中已经安装过JDK、Scala。Maven安装也很简单,略。
下载Idea并安装Scala插件

在线安装有点慢,但网上很多方法解决,略。
创建一个maven-scala工程
by @极乐小程序商店 2017-12-29 12:00 查看详情
我的第一个scala程序 (zhuanlan.zhihu.com)
帮同事处理List[scala.collection.immutable.Map[String,Any]]的排序问题
原来想的办法是

var x = mylist.sortWith(_.get(\"commonCount\").toString > _.get(\"commonCount\").toString)
_.get(\"commonCount\")可以取出值,但类型是 Some,要用_.get(\"commonCount\").get 来获取真实类型

scala> println(mylist.map(_.get(\"commonCount\").get.getClass))
List(class java.lang.Integer, class java.lang.Integer, class java.lang.Integer, class java.lang.Integer, class java.lang.Integer)
知道真实的数据类型,但在实际使用时要转换成基本类型.asInstanceOf[Int],进行判断
by @极乐小程序商店 2017-12-29 11:05 查看详情
微服务 | Martin Fowler (insights.thoughtworks.cn)
“微服务架构”这一术语在前几年横空出世,用于描述这样一种特定的软件设计方法,即以若干组可独立部署的服务的方式进行软件应用系统的设计。尽管这种架构风格尚无明确的定义,但其在下述方面还是存在一定的共性,即围绕业务功能的组织、自动化部署、端点智能、以及在编程语言和数据方面进行去中心化的控制。
by @Thoughtworks 2017-10-20 18:09 查看详情
Swift 之父 Chris Lattner 访谈录 (mp.weixin.qq.com)
本文是《 iOS 成长之路》22 篇精品文章中的两篇,分享出来给未订阅专栏的 iOS 开发者以及一些其他技术同学,相信无论对于大家技术学习和职业发展都会有莫大帮助。
by @安卓大王子 2017-09-05 23:01 查看详情
史上最简单的Scala for推导教程 (growthprogrammer.com)
Scala 的 for 语法,本质上就是语法糖。并且十分简单,简单到简短的一篇文章,就可以说清楚。

Scala 中的 for 语句,都是帮你转换成类似 foreach、 map、 flatMap、 withFilter、 filter 之类的语法。并且整个转化过程是递归的,容易理解的。

看完下面是几个例子,你就能立马掌握。这几个例子,是结合了 Scala 官方的yield文档 改进过来的。

第一个例子,转换成 foreach

for(x <- c1) {...}
会被scalac翻译成

c1.foreach(x => {...})
注意,没有出现 yield 关键字。

再来一个:

for(x <- c1; y <- c2) {...}
会展开成:

c1.foreach(x => for(y <- c2) {...})
然后 scalac会再针对里面的 for 再进行转换,直到所有的 for 被转换完。

第二个例子,先 flatMap后 map

for(x <- c1) yield {...}
会被 scalac翻译成

c1.map(x => {...})
注意,这里出现了 yield关键字。

再来一个:

for(x <- c1; y <- c2) yield {...}

会展开成:

c1.flatMap(x => for(y <- c2) yield {...})

然后再展开成

c1.flatMap(x => c2.map( y => {...}))

注意这里多了一个 yield 关键字,所以会用 flatMap、 map 而不用 foreach。

并且,前面的都使用 forMap(比如 c1),最后面使用 map(比如 c2)。

好了,有无 yield的区别讲完了,这也是最重要的区别了,剩下的都很简单,而且不管有无 yield,概念都一样。

接着往下。

第三个例子,尝试 withFilter ,不行再 filter

for(x <- c; if cond) yield {...}
会翻译成

c.withFilter(x => cond).map(x => {...})
如果 c 没有 withFilter 方法,就使用 filter 方法:

c.filter(x => cond).map(x => {...})
第四个例子,加入其它值

for(x <- c; y = ...) yield {...}
会变成

c.map(x => (x, ...)).map((x,y) => {...})
结束

好了,scala 的 for 规则就结束了,就是这么简单。你肯定能记住。
by @技术头条 2017-03-12 00:06 查看详情