Scala 的模式匹配

scala

最近开始学习 Scala,相较于学习 Haskell 的过程来看,Scala 真是直观得多,友好得多,更容易上手。以前写过关于从熟悉的 Java 和 JavaScript 来逐步学习 Groovy 和 Haskell 的 文章 ,这以后再来学习 Scala 的话,就可以不断比较了。如果和我一样有 Java 经验的话但是从来没有接触过 Scala 的话,建议先阅读这篇文章,A Scala Tutorial for Java Programmers,一边比较,一边熟悉,同时配套的还有这个,Scala for Java programmers – Joakim Ohlrogge & Enno Runne,Youtube 上的视频,

[……]阅读全文

一段集合操作的不同语言表达

看到 这样一条微博 ,觉得挺有意思,就记录在这里:

所谓对比,Java 真是足够啰嗦:

weibo

图不清楚,我来再叙述一下。要做的事情就是,把原有列表里面的每个元素都变成大写的,再放到一个新列表里面去。

这是 Java7 的版本: 

List list = Arrays.asList("andy", "michael", "thomas");
List list2 = new ArrayList<>();
for(String s : list)
	list2.add(s.toUpperCase());

 这是 Java8 的版本(移步阅读:《Java8 集合中的 Lambda 表达

[……]阅读全文

多重继承的演变

think

本来想告一段落别写编程范型的东西,但是这个话题最近发现很有意思,就拣出来唠一唠。从中除了能看出很多有趣的语言特性,观察不同语言的设计,还可以发现程序语言的发展过程。这里谈到的语言特性,都是从 C++的多重继承演变而来的,都没法完整地实现和代替多重继承本身,但是有了改进和变通,大部分功能保留了下来,又避免了多重继承本身的问题。

C++的多重继承

这个问题我觉得需要从老祖宗 C++谈起,我记得刚开始学 C++的时候老师就反复教育我们,多重继承的问题。比如说二义性问题,也就是说,两个父类如果定义了同名的方法,调用它的时候编译器就不知道怎么办了。

但是需要说清楚的是,多重继承确实是有其使用场景的,

[……]阅读全文

back to top