def main(args : Array[String]): Unit =
{
def add(x:Int,y:Int):Int =
{
return x+y;
} def subtract:(Int,Int)=>Int = (x,y)=>x-y; val multiply = (x:Int,y:Int)=>x*y; val division :(Int,Int)=>Float = (x,y)=>x/y; def sum:Int=>Int = i => i match
{
case 1 => 1;
case n => n + sum(i-1);
} def summ(i:Int):Int= i match
{
case 1 => 1;
case n => n + summ(n-1);
} lazy val fact:Int=>Int =
{
case 1 => 1;
case n => n*fact(n-1);
} lazy val summary:Int=>Int = (_:Int) match
{
case 1 => 1;
case n => n + summary(n-1);
} println(summ(100)); }

  

object Main{

  def main(args:Array[String]):Unit=
{ object W
{
type S = String;
type D = Tuple2[S,S];
def say(x:D):S= s"say ${x _1},${x _2}";
} implicit def MyStr(s:String)=new
{
def ++:(x:Char) = x + s;
} val ss = 'c' ++: "hello"; // 相当于 "hello".++:('c')
//但是如果写成 "hello" ++: 'c' 则提升 Char 没有 ++: 方法 Predef println ss }
}

  

 implicit def XString(s:String)= new
{
def unary_- = s.reverse;
def ? = s.length;
} println(-"hello");//olleh
println( "hello"? );//5

  

在基类中将基本的操作(开\关\异常处理)都处理好,在子类中只定义功能操作.

package exp;

import java.io.PrintWriter

object Main
{
def main(args : Array[String]): Unit =
{
def fileOps = new MyFileOps;
fileOps.opPw;
} } class MyFileOps extends FileOps("/home/wengmj/1.txt")
{
override def pwOp(writer:PrintWriter):Unit=writer.println("hello world");
} abstract class FileOps(path:String)
{
def pwOp(writer:PrintWriter):Unit; def opPw():Unit=
{
val writer = new PrintWriter(path);
try
{
this.pwOp(writer);
}
catch
{
case _:Throwable => println("unknow exception");
}
finally
{
writer.close
}
}
}

编写新的控制结构:借贷模式,柯里化

package exp
import java.sql.SQLException object Main {
def main(args: Array[String]): Unit = { val x = withDB(new DB()) {//这里本应该用小括号的用大括号是函数只有有个参数时用大括号更优美
db =>
{//这个大括号是定义函数必须的 
db.prepareStatement("update products set product_name='aaa' where product_id=123");
db.update
}
}
} def withDB(db: DB)(op: DB => Any): Any =
{
var r: Any = null;
try {
db.open
r = op(db);
db.close
} catch {
case e: Exception => println(e.getMessage);
} finally {
db.close
}
r;
}
}
class DB {
@throws(classOf[SQLException])
def prepareStatement(sql: String) = Unit; @throws(classOf[SQLException])
def open() = Unit; def close(): Unit = Unit; @throws(classOf[SQLException])
def update(): Boolean = false;
}

  

Scala 学习笔记(五)的更多相关文章

  1. [Scala]Scala学习笔记五 Object

    1. 单例对象 Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber = 0 ...

  2. scala 学习笔记五 foreach, map, reduce

    例子 val v = Vector(,,,) ) println(s) //输出:Vector(2, 4, 6, 8) val v2 = Vector(,,,) var v3 = v2.reduce( ...

  3. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  4. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  5. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  6. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  7. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  9. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  10. python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍

    python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...

随机推荐

  1. ZJOI2007矩阵游戏

    题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交 ...

  2. 【Python】Django

    数据表更改 Django 1.7.x 和后来的版本: Django 1.7.x 及以后的版本集成了 South 的功能,在修改models.py了后运行: python manage.py makem ...

  3. 【前端】在Gulp中使用Babel

    Install $ npm install --save-dev gulp-babel babel-preset-es2015 用法1: const gulp = require('gulp'); c ...

  4. 24-React Components组件

    Components 组件 1.组件 可以让UI独立的分割出来,可以让UI重复利用. 2.组件就像是JavaScript函数,它们能够接收任意的输入(称为"props",即属性)并 ...

  5. ServerSocket

    在网上找ServerSocket看到的解释

  6. R:incomplete final line found by readTableHeader on

      报错: In read.table("abc.txt", header = T) :  incomplete final line found by readTableHead ...

  7. smarty模板中如何嵌入javascript脚本

    [官方网站](http://www.php100.com/manual/smarty/) 在smarty文件里直接写javascript代码时候,造成500错误. javascript代码有很多的{} ...

  8. cocos2dx解决苹果正版ipv6的问题

    苹果官方出了新的规定,要求新上架的app都必须单独支持ipv6-only的网络. 具体的要求链接:https://developer.apple.com/library/mac/documentati ...

  9. 12 个CSS 高级技巧汇总[转载]

    使用 :not() 在菜单上应用/取消应用边框 给body添加行高 所有一切都垂直居中 逗号分隔的列表 使用负的 nth-child 选择项目 对图标使用SVG 优化显示文本 对纯CSS滑块使用 ma ...

  10. phalcon: 多模块多表查找,多表sql

    那么多模块下,如何分页的,如果直接用->from(表名),报错找不到此类,此时要引用model类的全命名空间名称如下: $builder = $this->modelsManager-&g ...