首页
学习
活动
专区
圈层
工具
发布

#scala

多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性

深入理解Scala隐式函数:自动类型转换

starzy

你手里是一个A类型,但当前位置需要B类型。Java会直接编译报错。Scala会多问一句:作用域里,有没有一个能把A变成B的函数?如果有,我帮你自动调用它。

4800

深入理解Scala隐式参数:上下文流转

starzy

上一篇讲了隐式值——"被编译器自动取用的值"。这篇讲它的另一半:隐式参数——"方法签名里,声明由编译器自动填充的参数"。

5810

深入理解Scala隐式值:编译期自动装配

starzy

写一个方法,有些参数你不想到处手动传——比如线程池、配置、序列化器、执行上下文。它们在一个上下文里是固定的,每次调用都显式写一遍,既啰嗦又容易传错。

7510

深入理解Scala Trait:从接口到可堆叠混入的代码复用单元

starzy

Java里接口(interface)和抽象类(abstract class)是两个东西:接口只能定义契约,抽象类才能承载实现。而且一个类只能继承一个抽象类。

6010

深入理解Scala样例类:值对象契约

starzy

就这一行。构造、字段、equals、hashCode、toString——全部自动生成,而且还不止这些。

11700

深入理解Scala伴生类:类对象合一设计

starzy

实例成员属于对象,静态成员属于类——它们写在同一个类里,但本质上是两个世界的东西。

10200

深入理解Scala偏应用函数:函数工厂设计

starzy

Java做不到。Java的方法调用必须把所有参数一次传完——你不能"先传一部分,剩下的以后再说"。

11500

深入理解Scala嵌套函数:作用域封装之道

starzy

一个类,两个private辅助方法。看起来挺正常——但你有没有想过:这两个辅助方法,只有normalize这一个地方用到。它们是类级别的方法,但其实它们应该是n...

11600

深入理解Scala匿名函数:函数式编程基石

starzy

Scala呢?Scala从第一天就有匿名函数——而且它的匿名函数比Java的Lambda更彻底、更灵活。

11610

深入理解Scala可变参数函数:从Java数组语法到优雅集合传递

starzy

Java程序员写过public static void main(String... args)吧?这个String...就是Java的可变参数。

11710

深入理解Scala默认参数函数:从方法重载到优雅API设计

starzy

Java程序员写方法重载的时候,一定有过这种痛苦:一个方法有三个参数,你想让调用方在某些情况下可以不传那几个参数。怎么办?写三个重载方法。

3810

深入理解Scala递归函数:从栈溢出到尾调用优化

starzy

Java程序员对递归的印象,大概停留在"写个阶乘"、"写个斐波那契"这种教科书示例里。实际项目里很少用——因为递归太容易栈溢出了。

8410

深入理解Scala函数定义:从方法到函数的类型跨越

starzy

Java程序员第一次写Scala函数的时候,一定会困惑一件事:为什么Scala的函数写起来这么奇怪?

8610

深入理解Scala元组:从多返回值到模式匹配的桥梁

starzy

你有没有遇到过这种情况:一个函数明明需要返回两个值——比如查询数据库,既要返回数据,又要返回总行数;既要返回成功结果,又要返回错误信息。Java里你怎么处理?要...

7310

深入理解Scala可变Map:动态构建场景下的性能与设计权衡

starzy

上一篇我们聊了不可变Map——它O(1)的查找、它的函数式操作,在大数据开发里无处不在。但有个问题:如果你要在一个循环里不断往Map里加key-value对,用...

10310

Scala Set深度解析:为什么大数据开发离不开它?

starzy

在Spark里做用户去重,你会用什么?在Flink里做实时UV统计,你会用什么?在ETL里做维度关联,你会用什么?答案都是Set。但很多人用了几年Set,对它的...

12810

Scala ListBuffer深度解析:为什么它是Scala集合体系最聪明的设计?

starzy

很多人用了几年Scala,对ListBuffer的认知还停留在"可变版List"。但如果你真的读过它的源码,会发现这是一个设计极其精妙的类——它不是简单的"可变...

10210

Scala List操作:不可变链表的函数式美学

starzy

Scala的List不是Java的List——它是不可变的链表,是函数式编程的核心数据结构。head/tail递归、模式匹配、::构造,让列表处理从Java的f...

17310

Scala可变数组操作:ArrayBuffer从入门到精通

starzy

Array是定长的,ArrayBuffer是动态的。当你需要边遍历边添加、边过滤边收集时,ArrayBuffer就是你的首选。它不是ArrayList的翻版,而...

12010

Scala Array操作:从定长数组到ArrayBuffer的完整指南

starzy

Scala的Array就是Java数组的封装,但Scala给它装上了集合操作的"超能力"。索引访问、map/filter、与List互转——让数组处理从Java...

12410
领券