文档章节

为什么要创建开放源码的PlayScala社区?

joymufeng
 joymufeng
发布于 2017/08/09 17:48
字数 935
阅读 49
收藏 0

Play Framework从问世至今已经十个年头了,但是可惜的是这么优秀的框架在国内却鲜为人知。尤其是当Play Framework 2.x发布以后,基于Scala语言重写了整个框架。当Scala和Play Framework相遇,这本该是一段美好的佳话,可结局却是,面对Scala语言更多的人望而却步。 这其实都是因为人们潜意识里对未知事物充满恐惧。但其实Scala没那么可怕,相反了解它一点你会觉得它很可爱。例如很多人看到Scala使用::拼接元素,使用:::拼接列表,例如:

val list1 = List("c", "a", "l", "a")
val list2 = s :: list1 // list2: (s, c, a, l, a)
val list3 = List("p", "l", "a", "y")
val list4 = list3 ::: list2 // list4: (p, l, a, y, s, c, a, l, a)

然后就开始吐槽:WTF,这是什么鬼? 别急,给我一分钟时间,看看能否说服你!

首先你需要了解一个基本概念,在Scala中一切都是方法:

"a" * 3 //等价于: "a".*(3)
2 - 1   //等价于: 2.-(1)

所以没错,你之前看到的::和:::自然也是方法,只不过是为了简洁,省略了.和()。List是由head和tail拼接在一起的递归结构(这种设计在模式匹配时非常方便)。 List的定义可以写成如下形式:

head :: tail

head是首元素,tail是剩余的List。仔细瞧瞧,::看起来是不是很像胶水,将列表的头和尾紧紧地粘在一起,更进一步,:::可以把两个列表粘在一起。这样的代码是不是很简洁,并且富有表达力! 在Scala中,这种简洁的设计比比皆是,例如我们再来看看如何构建一个Map实例:

val map = Map("name" -> "PlayScala社区", "url" -> "http://www.playscala.cn")

感受一下,是不是非常清晰明了。 当然Scala的魅力远不止如此,当你慢慢了解它时,你会慢慢深陷而无法自拔。

讲了那么多,我只想告诉你Scala并不可怕,其实在Play Framework中,你根本就不需要抱着Scala书籍啃完再写代码,PlayScala社区会为你准备一篇30分钟的为Play初学者准备的Scala基础知识,读完你就可以投入Play Framework的怀抱了。

好了,回归正题,那为什么要创建PlayScala社区呢? 主要原因是国内Play Framework的第一手中文学习资料非常稀缺,虽然在网上可以找到一些教程,但是知识的碎片化很严重,并且很多质量较差的文章会影响初学者的认知。 PlayScala社区正是基于这样的原因而诞生的,并且希望能够实现以下几个愿景:

  • PlayScala社区开放源码,希望通过大家的努力,将Play Framework开发的最佳实践全都囊括进来,供大家日常开发参考。
  • 维护一个高质量的『学习』板块,系统而全面地介绍Play Framework开发的相关知识,并将PlayScala社区源码中的最佳实践在这里以文档的形式阐述,你可以认为它是Play Framework官方文档的一个有力补充。
  • 提供一个交流互动平台。PlayScala社区的『分享』和『问答』板块是为『学习』板块服务,这两个板块沉淀下来的知识最终会被收录到『学习』板块。

希望在大家的一起努力下,PlayScala社区(http://www.playscala.cn)可以让更多的人了解并加入Play Framework的开发行列,不断增强Play Framework在国内的影响力。

© 著作权归作者所有

共有 人打赏支持
joymufeng
粉丝 92
博文 71
码字总数 64761
作品 2
杨浦
高级程序员
私信 提问
IntelliJ IDEA 开发技巧 - 参数名提示(parameter name hints)

转载请注明joymufeng,欢迎访问 PlayScala社区(http://www.playscala.cn) 原文链接:http://www.playscala.cn/article/view?id=10-59e6cc921e00001200db9987 IntelliJ IDEA 2016.3引入一个参......

joymufeng
2017/10/18
0
0
joymufeng/play-community

PlayCommunity 社区系统 PlayCommunity社区系统基于Play Framework 2.6.x开发而成,目前正在运营PlayScala社区。 下载&编译 git clone https://github.com/joymufeng/play-community.git 打开......

joymufeng
2017/08/09
0
0
Scala 谜题 - 有趣的类型转换

在 Scala 中,List[String] 和 List[Int] 之间并没有继承关系,但是下面的代码竟然可以通过编译并且顺利运行: object Test extends App {val strList: List[String] = List("a", "b", "c")...

joymufeng
03/11
0
0
ECMAScript规范实现--Tamarin

在 2006 年 11 月 7 日,Adobe Systems 宣布将 ActionScript Virtual Machine 的代码捐献给 Mozilla Foundation。因此,Mozilla 启动了一个新的开放源码项目 Tamarin。Adobe 和 Mozilla 希望...

匿名
2009/11/01
1K
0
Commons Clause 许可证介绍及常见问题解答

The Commons Clause. “Commons Clause” 许可条款v1.0 本软件由许可方根据以下所定义的条款提供给您,但须符合以下条件。 在不限制许可中的其他条件的情况下,本许可下的权利授予不包括,并...

oschina
08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day150-2018-11-17-英语流利阅读-待学习

歪果仁也疯狂:海外版抖音的征途 毛西 2018-11-17 1.今日导读 海外版抖音 TikTok 于 2017 年 5 月上线海外,至今覆盖全球 150 多个国家和地区,月活跃用户数已突破 5 亿。然而,“出海”的抖...

飞鱼说编程
今天
7
0
分布式学习最佳实践:从分布式系统的特征开始(附思维导图)

什么是分布式系统 回到顶部   分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法...

dragon_tech
今天
4
0
TOKEN设计

TOKEN设计 Api_Token 首先需要知道API是什么? API(Application Programming Interface)即应用程序接口。你可以认为 API 是一个软件组件或是一个 Web 服务与外界进行的交互的接口。而我们在...

DrChenXX
今天
3
0
浅谈“李氏代换”——从纪念金庸和斯坦李说起

李氏代换(LSP)简介 李氏代换是软件设计的一个原则,又名依赖倒转原则或依赖倒置原则,其衍生原则有接口分离原则等。该原则由Barbara Liskov于1988年提出。 该原则指出,程序中高级别的元素...

SamYjy
今天
35
0
JavaScript实现在线websocket WSS测试工具 -toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部