在Java开发中,经常会有一个需求,将一个 Bean 复制到另外一个 Bean,尤其是在后台分层的场景下,在不同的层之间传递信息,经常需要进行 这样的一个对象复制工作,类似于: val source: PersonSource = ...val dest = new PersonDest() dest.setName( source.getName ) dest.setEmail( source.getEmail ) dest.setAddress( source.getAddress ) ..…
在上一篇中,我们示范了使用macro来重写 Log 的 debug/info 方法,并大致的介绍了 macro 的基本语法.基本使用方法.以及macro背后的一些概念, 如AST等.那么,本篇中,我们将结合作者在 scala-sql 项目中的一些实际应用,向你展示 macro 可以用来做什么?怎么用? scala-sql 简介 scala-sql 是一个轻量级的 JDBC 库,提供了在scala中访问关系型数据库的一个简单的API,其定位是对面 scala开发者,提供一个可以替换 spring-…
优化的日志方式 package macros_demo import scala.language.experimental.macrosimport org.slf4j._import scala.reflect.macros.whitebox.Context object Macros {    implicit class LoggerEx(val logger: Logger) {        def DEBUG(msg: String): Unit = macro LogMacros…
在Lisp语言中,macro是一个神器,可以“动态的生成代码”,然后被执行,这种方式给到Lisp无限的表达能力.除Lisp之外,很少有语言支持Macro这个特性,我记得 GWT之中曾经有一个类似的Generator的概念,可以在编译期间提供一定的代码生成能力(GWT Project),很多GWT的高级特性都是通过这个语言特性而得以实现的,譬如: UiBinder 可以实现申明式的 UI 开发. ImageBundle 简单的实现很多图片的聚合,从而减少round-trip,提高网页装载速度. S…
    奋斗不能等待,我们不能等到垂暮之年再去“全力以赴”.让我们从现在开始,为理想而努力,为人生而拼搏.精诚所至,金石为开,相信奋斗会让我们的青春之花绽放得更加绚烂,让我们的人生之路走下来不留遗憾. 一.我带大家看看我的神奇Bank系统思路. 1.我们都知道去银行办理业务都是要有一张属于你自己的卡    所以这里就需要一个卡的类 class Card { private string cardNo;//卡号 private string cardOwner;//持卡人 private stri…
嘿嘿,公司最近需要测试SPARK性能,赶上了.. 那LUA之后,SCALA也简单看看,,, 其实,我三月时买了本129元的SPARK的书,,全国只那一本哈. package com.hengheng.scala class HelloScala { } object HelloScala { def hello(name: String) : String = { "Hello " + name } def helloscala() { println("Hello Scal…
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为Scala Macros可以直接对程序进行修改.Scala Macros的工作原理是在程序编译时按照编程人员的意旨对一段程序进行修改产生出一段新的程序.具体过程是:当编译器在对程序进行类型验证(typecheck)时如果发现Macro标记就会将这个Macro的功能实现程序(implementation…
Scala开发团队正在将实验版宏指令加入到即将发行的2.10版中.Scala宏指令提供了编译时元编程的高级形式.Scala宏网站描述道: “宏指令显著简化了代码分析和代码生成,这使得它们成为处理大量现实用例的一种可选工具.传统上涉及编写和维护样板的场合可用宏以简单且易维护的方式实现.因此我们认为宏对于Scala编程语言是一项非常有价值的资产.” Scala的宏指令允许开发者创建方法时以语法树转化的形式实现.这些是标准方法的定义,其在编译期间被显式地转换.举一个简单的例子,如assert方法: i…
从2011年開始写Android ApiDemos 以来.Android的版本号也更新了非常多,眼下的版本号已经是4.04. ApiDemos中的样例也添加了不少,有必要更新Android ApiDemo演示样例解析系列文章(当然之前的文章还是实用的,依旧能够作为參考). 为了不反复之前的内容,我们准备使用Scala语言开发Android应用,随着样例的逐步解析,我们会把ApiDemos的样例的代码依次改动为Scala代码,并使用Robujuice 来注入View.关于Scala编程能够參考博客…
1 语言介绍 他已经出生15年了,就像明星一样,谁都不可能一开始就人气爆棚粉丝无数,得慢慢混. 据说这家伙已经威胁到了Java的地位,我当时也是被这句话惊到,才毅然决然的认识了他.目前也正在努力学习中.估计到目前为止国内没有谁敢说已经精通Scala了.当然我猜测有绝大一部分人是为了装那个啥才去学他的,说实话学了他确实可以装那个啥,毕竟很实用,而且学的人不多,学会的人更不多,能熟练运用的人更是少之又少. 大家肯定都有个疑问,为什么Scala这么受欢迎到底是哪里吸引了大家?捡重点说吧,篇幅不宜太多.…