惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
T
The Blog of Author Tim Ferriss
月光博客
月光博客
Recent Announcements
Recent Announcements
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 三生石上(FineUI控件)
P
Proofpoint News Feed
The Register - Security
The Register - Security
博客园 - 叶小钗
博客园 - Franky
The Cloudflare Blog
雷峰网
雷峰网
罗磊的独立博客
M
MIT News - Artificial intelligence
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
爱范儿
爱范儿
博客园 - 司徒正美
Recorded Future
Recorded Future
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
F
Full Disclosure
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog
大猫的无限游戏
大猫的无限游戏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
WordPress大学
WordPress大学
小众软件
小众软件
K
Kaspersky official blog
Attack and Defense Labs
Attack and Defense Labs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Forbes - Security
Forbes - Security
aimingoo的专栏
aimingoo的专栏
IT之家
IT之家
The Last Watchdog
The Last Watchdog
N
News and Events Feed by Topic
B
Blog RSS Feed
S
Security @ Cisco Blogs
美团技术团队
量子位
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cloudbric
Cloudbric
Hacker News - Newest:
Hacker News - Newest: "LLM"

咸糖 - 自律者自由

2025 年终总结:降噪、重构与长期主义 在新加坡和新山吃过最好的食物(持续更新) 写给还在迷茫的你:我的三本大学回忆 2024 年终总结 Neovim: No Crash Incremental Selection 2022 年终总结 使用 neovim 作为 PDE(个性化开发环境) shell 是一个不错的生产力工具 使用二八法则省力地学习 awk 肉身翻墙新加坡安顿指南 使用 Docker Compose 建立你自己的开发环境 关于编写可维护的代码的一些实践与想法 我为什么使用双向链接做笔记? 关于焦虑和拖延症 Golang: 如何处理日渐膨胀的 interface 使用番茄工作法来更好的利用你的时间 Unix 如何杀死一个进程和它的子孙进程? Golang: 让你的零值更有用 使用 Mock 和 Interface 进行 Golang 单测 关于 Golang Slice 的一些细节 总结一些计算机常用的原则 重新学习英语语法 上班族近期小半年入门投资基金组合的学习与实践经历 疫情期间的肉身翻墙新加坡指南 About me 软技能:大厂底层员工打工指南 软技能:我是如何获取知识与信息的? 分布式的令牌桶算法的实现 实现一个AtomicInteger GC root 在哪里? 什么是 Minor GC/Major GC 漏桶算法的设计与实现 剑指offer 单例模式 TCP 针对面试学习 Actor 如何处理阻塞消息 Akka 源码解析 AES 需要限制 SEED 长度 Java 如何区分==与.equals()方法 2018年年度总结 Java 集合扩容
How to learn scala
xiantang · 2020-01-15 · via 咸糖 - 自律者自由

文章目录

【注意】最后更新于 December 29, 2025,文中内容可能已过时,请谨慎使用。

背景:

刚来到以scala为技术栈的公司的时候,配置了半天环境,然后终于将项目起了起来,发现里面的代码很奇怪,没有任何循环,数据的操作是一个函数套着一个函数,十分令人疑惑,于是借着业务需求和这股好奇劲开始学习关于scala的内容。

目标:

  1. 熟练运用项目中的异步操作 Future 变换 (同步思维转异步)
  2. 熟悉 Play 框架能够熟练的翻文档解决问题
  3. 熟练运用高阶函数 map flatMap 等操作

阶段 1:能写 Scala

这个阶段比较容易达到,就是首先需要阅读 《Scala编程》前几章 或者 推特scala课堂 ,来了解scala的基本语法。但是在这个阶段仍然会有很多的坑,基本是在 IDEA 的提示 与 爆红下才能勉强的写代码。

阶段2: 知道函数式编程是什么东西

当你差不多写了半个月 Scala 之后,仍然好奇函数式编程是什么东西,这个时候你就可以去学习一些关于函数式编程的知识了,我的线路是先学习了 programming-languages 这门入门课程,主要讲了一些关于函数式编程的基础知识,包括但不限于 闭包 高阶函数 尾递归 代数类型。 虽然语言不是Scala 但是这门课为我之后的函数式编程打下了一定的基础。 如果你在这门课上认真的完成了作业,后面的路会通畅很多。

阶段3:再深入的了解

到这个时候,你一定会听到一本十分有名的书《Scala 函数式编程》 这本书,很有可能在你没经历前几个阶段的时候,你就看了,但是发觉里面的内容十分抽象,便放弃了。现在你就可以大胆的去看它了,可以无痛的看到第六章。

再在下面,就会被更抽象的 Monad Factor 等概念所迷惑。

阶段4:持续学习基础

上面的阻塞其实还是因为对基础知识不够扎实,所以还是需要进一步的学习,这里推荐 Scala 语言作者的课程 Functional Programming Principles in Scala . 因为不是免费的,所以需要付费或者采用奖学金(咸鱼)来免费学习。这门课程虽然不及上面的 programming-languages 课程,但是比较困难的习题还是能提升FP的水平的。

阶段5:参与社区

这个时候你就可以继续去看 《Scala 函数式编程》 这本书了,因为你看完了上面的两门全英文课程所以英文也不会再惧怕就可以参与社区了,这里推荐几个比较好的社区,曾经给我过帮助的社区 https://gitter.im/scala/scala. https://gitter.im/akka/akka , 如果对开源有兴趣,就可以给 akka 或者 Play 修复BUG了。

最后推荐一些给我过帮助的网站

coursera.org 网课平台

https://www.playframework.com/ play 官网

https://stackoverflow.com/ scala 模块 基本99%的scala 问题都能在上面找到,前提是会搜索

https://github.com/ 找轮子

文章作者 xiantang

上次更新 2025-12-29 (4c152d04)

赞赏支持

微信打赏 支付宝打赏