zoukankan      html  css  js  c++  java
  • scala学习笔记4--scala的函数一

    默认值:

    def sayMyName(name : String = "Jack"){
    		println(name)
    }
    

    可变参数:

    def sumMoreParameters(elem : Int*) = {
    	  var sum = 0
    		for(e <- elem){
    			println(e)
    			sum += e
    		}
    	  sum
    }
    

    下划线的使用:

    def add(a:Int,b:Int) = a+b
    def add2  = add(_:Int,2)
    

    递归函数:需要显式的给予函数的返回类型

    def fac(n:Int):Int = if( n <= 0) 1 else n*fac(n-1)
    

    函数柯里化:

    把这个参数一个个独立开来写,这就是柯里化

    def mulitply(x:Int)(y:Int) = x*y
    	
    def m2 = mulitply(2)_;
    

    柯里化就是把参数可以分开来,把部分函数参数可以用下划线来代替

    匿名函数声明方式

    val t = ()=>333
    

    :后面是数据类型,c代表传进来的参数

    def testfunc02(c : ()=>Int ){
          println(c())
          1000
     }
    

    匿名函数 

    val d1 = (a:Int)=> a+100;
    

    匿名函数作为参数,其实就是参数名,后面跟上参数类型,然后是表达式

    def testf1(callback : (Int,Int)=>Int )={
        	println(callback(123,123));
    }
    

    嵌套函数,其实就是def里面套一个def

    def add3(x:Int, y:Int ,z:Int) : Int = {
    		def add2(x:Int, y:Int):Int = {
    			x + y
    		}
    		add2(add2(x,y),z)
    }
    
    def sum(f : Int => Int) : (Int , Int) => Int = {
        		def sumF(a : Int , b : Int) : Int = 
        		  if (a >b ) 0 else f(a) + sumF( a + 1 , b)
        		 sumF
    }
    
  • 相关阅读:
    脚本,网络配置,指令
    拦截TextBox 双击消息
    VB指针操作和消息钩子
    文件和文件夹操作
    常见反编译产生错误 k__BackingField 解决办法
    关机/重启/注销
    通用命名前缀
    语言区域代码
    常用数据库链接字符串
    用VB实现COM+组件配置
  • 原文地址:https://www.cnblogs.com/dongdone/p/5741998.html
Copyright © 2011-2022 走看看