PLT 板


LINE

看板 PLT  RSS
Scala 是 Scalable Language 的意思 Scalable 是大小可以变化的意思 总体来说就是 可大可小的语言 :QQ ( 或说 扩展性良好的语言 ) 的意思 它执行於 JVM 上,和 Java 相容 Scala 本身语言可以说是 物件导向 和 函数式语言的混合。 名人帮 Scala 语言的背书: 1. Java 制作者 James Gosling 说 : 如果要它选一个 Java 以外的语言,它会选 Scala 2. Groovy 制作者 James Strachan 说 : 若 2003 年时它有看到 Programm Scala,它就 不会想做 Groovy 了 目前国外公司的 Java 开发模式开始走向 Java + 另一 JVM 语言 原因是 : Java 弹性不够,有时要程式更精简或更灵活没办法,而且 Sun 公司也鼓励这 种协同方式 举个例子来说,如果一个 class 有 姓名 和 身份证 Java : public class Person { private String idn; private String name; public Person(String idn, String name) { this.idn = idn; this.name = name; } public String getIdn() { return this.idn; } public String getName() { return this.Name; } // Setter 先省略 } 这样明明很简单的程式还要用 Setter/Getter 架构太不人性化了, 尤其我可以说 90% 的 Setter 和 Getter 应该都是空的, 很多 JVM 语言都是从简化这个当作第一步的。 Scala: class Person(val idn : String, val name : String) 一行就搞定了 当然 Java 这样写也没什麽不对,但是程式设计师一天面对的是数百数千数万行的程式, 如果每个程式都明明可以很简单还要弄得那麽复杂的话,对程式设计师来说会很烦 以行数来说 Java 是稳输的,但是速度呢? 以 JVM 六大语言来看,大略的比较是 Java > Scala > Fan > Clojure > Groovy > JRuby > Jython Scala 和 Java 的相差其实不算大,但可以节省程式设计师一堆费事的工夫 Java: Person a = new Person("A123456789","测试君"); Scala: var a = new Person("A123456789","测试君") Scala 版可以看到,明明後面都写是 Person 了,前面正常也是 Person 可以省略, 加上正常一行的程式,分号可以省略。 专有名词,翻译我没把握,先自己翻的 Java 有, Scala 没有的: static 静态 primitive types 基础型别 break continue 回圈控制(但 2.8 版要加回 break) interface 介面 wildcard raw type enum 列举类别 Scala 新加的: pure object system 纯正物件系统 operator overloading 运算子改写 closure mixin with trait 混合式特徵 existential types 存在型态 abstract types 抽象型态 pattern matching 2.8 会加一些新的如 Continuation Scala 和 Java 的比较例子很多, 但是其实很多 Scala 的功能都不是关键字,是可以定义的。 所以 Scala 作者觉得 Scala 的功能项和 Java 相当。 像是这一段 : ( 这是 Scala 但是用 Java 的方式来写的 ) val f = new BufferedReader(new FileReader(path)) try { println(f.readLine()) } finally { if (f != null) f.close() } 可以使用这个 using 简单搞定 using (new BufferedReader(new FileReader(path))) { f => println(f.readLine()) } 但是 using 是怎麽写的?? def using[T <: { def close() }] (resource: T) (block: T => Unit) { try { block(resource) } finally { if (resource != null) resource.close() } } using 使用一个样板(Template) T 继承 Duck Typing 只要有 close 就可以的物件 然後它把里面的 内容,当成 block 来处理。 然後 using 为何可以直接使用? 它把它包在 object (static 物件之中),再引入让它可以直接用起来像函式。 我觉得 Scala 是,除了 物件导向 和 函数式语言 之外, 它竟然还能写起来像 脚本语言(Script Language) 这也算是很妙的了 ( 暂时先写到这 ) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.28.137
1F:推 james732:推清楚明了的简介 08/16 11:25
※ 编辑: Schelfaniel 来自: 114.32.74.159 (08/16 12:22)
2F:→ Schelfaniel:其实 Scala 功能太多,要简介很难 @.@ 08/16 12:25
3F:推 godfat:我觉得不可能... scala 功能多到有点扯 08/16 12:25
4F:推 PsMonkey:推~ 可以在 Java 版也贴一份吗? 08/16 13:06
Schelfaniel:转录至看板 java 08/16 14:07







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP