码迷,mamicode.com
首页 > 其他好文 > 详细

Scala(二)

时间:2018-03-04 00:21:40      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:int   log   foo   转换   not   函数定义   表达   post   pos   

try 表达式


var result = try{
    Integer.parseInt("dog")
}catch{
    case _ => 0
}finally{
    println("excute")
}

match 表达式

val code = 3
var result = code match{
    case 1 => "one"
    case 2 => "two"
    case _ => "others"
}

求值策略

  • Call By Value
    • 对函数实参求值,且仅求值一次
  • Call By Name
    • 函数实参每次在函数体内被用到时都会求值

def foo(x:Int,y: => Int):Int={
    x * x
}

def loop():Int = loop

函数

(1)匿名函数

匿名函数定义格式 形参列表 => {函数体}

(2)柯里化函数

把具有多个参数的函数转换为一条函数链,每个节点上都是单一参数


def add(x:Int)(y:Int) = x + y

var add1 = add(1)_
add1(5)

def add2 = add(2)_
add2(6)

(3)尾递归

覆盖当前记录,而不是在栈中创建新的函数


@annotation.tailrec
def fun(n:Int,m:Int):Int={
    if(n <= 0) m
    else fun(n-1,m*n)
}

@annotation.tailrec
def fun1(n:Int,m:Int):Int={
    if(n == 1) m
    else fun(n-1,m+n)
}

Scala(二)

标签:int   log   foo   转换   not   函数定义   表达   post   pos   

原文地址:https://www.cnblogs.com/fonxian/p/8503427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!