在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…
前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Scala函数式编程(三) scala集合和函数 Scala函数式编程(四)函数式的数据结构 上 1.List代码解析 今天介绍的内容,主要是对上一篇介绍的scala函数式数据结构补充,主要讲代码.可以先看看上一节,主要讲的是函数式的list,Scala函数式编程(四)函数式的数据结构 上.这些代码我都放在我的公众号里面,包括函数式的List以及一个函数式的二叉搜索树,关注公众号:哈尔的…
Scala快速入门(四)--继承.接口 一.继承 1.继承的概念:省略 2.模板: class Person(n:String,a:Int) { var name:String=n var age:Int=a def showInfo():Unit={ println("学生信息如下") println("名字:"+name) println("年龄:"+age) } } class Student(n:String,a:Int) extends…
hexo 编写文章可以使用以下命令创建hexo new "文件名" #创建的文章会在_pots目录下文章的后缀名是以md命名的文件格式,遵循markdown语法,所以编写文章可以使用markdown语法进行书写我们的文章,相当方便.快速! 分类及标签添加 新建一篇文章默认是没有分类及标签的,可以手动进行修改.然而文章就会自动分类以及加上对应的标签了 12 tags: 标签名 categories: 分类名 文章过长,使用阅读全文分屏 介绍一种比较简单的方式:只需要在文章内容需要分割的地…
最近开始接触scala编程语言,觉得还是比较新的一个东西,虽然说和java比较像,是java的继承者,兼顾面向对象编程和函数式编程的优点,但是,终究是一个新的东西,还是要从最基本的学起.而这当中,函数是scala语言的核心部分. 所以,今天,就只说函数的东西.下面是函数定义的基本语法: def functionName ([list of parameters]) : [return type] = { function body return [expr] } 其实,上面的return关键字是…
    奋斗不能等待,我们不能等到垂暮之年再去“全力以赴”.让我们从现在开始,为理想而努力,为人生而拼搏.精诚所至,金石为开,相信奋斗会让我们的青春之花绽放得更加绚烂,让我们的人生之路走下来不留遗憾. 一.我带大家看看我的神奇Bank系统思路. 1.我们都知道去银行办理业务都是要有一张属于你自己的卡    所以这里就需要一个卡的类 class Card { private string cardNo;//卡号 private string cardOwner;//持卡人 private stri…
前言 本篇将介绍一个和Array很相似的集合List,更多内容请参考:Scala教程 本篇知识点概括 List的构造 List与Array的区别 List的常用方法 List伴生对象的方法 ::和:::操作符的介绍 Scala中使用List Scala是函数式风格与面向对象共存的编程语言,方法不应该有副作用是函数风格编程的一个重要的理念.方法唯一的效果应该是计算并返回值,用这种方式工作的好处就是方法之间很少纠缠在一起,因此就更加可靠和可重用.另一个好处(静态类型语言)是传入传出方法的所有东西都被…