Scala笔记

作者: 新的简书 | 来源:发表于2014-12-15 12:19 被阅读280次

Scala基础

学习twitter的scala教程的笔记


函数

  1. 函数定义,scala语法中可以使用多种方式定义函数,比如:
    • 直接用等号定义,def func(x:Int):Int = x+1
    • 用大括号定义
    def func2(x:Int):Int = {
        return x+1
    }
* 用匿名函数定义,`val func3=(x:Int)=> x+1`,可以使用大括号{},`val func3=()=>{x+1}`,在此例中func3为方法名,等号为赋值,可以理解为将等号后面的内容赋值给func3。
  1. 匿名函数是指用户可以定义一个函数,而不用指定这个函数的名称。可以对比思考Java语言中的匿名类,语法为(x:Int)=>x+1 或者使用括号{},(x:Int)=>{x+1},返回值类型为=>后的最后一个表达式
  2. 有类型的函数,scala函数的函数其实都是对象,所以可以通过赋值的方式定义,那么既然是对象,就有类型。scala函数的类型都是这个样子的:scala.Function1[Int,Int]。Function1指的是一个入参的函数,顾名思义Function2是两个入参的函数。最多可以有22个入参。既然是对象,就有方法,函数的执行,使用过基类的apply方法调用的。所以如果我明定义func3为一个函数类型的对象,那么可以通过func3.apply()的方式执行func3函数。
  3. 函数作为参数使用,因为函数使用类型的,那么就可以作为参数传递。比如:
object Main extends App {
      println(timesTwo(2))
      println(best(2,(x:Int)=>x+1))
      println(best(2,timesTwo))

      def timesTwo(i:Int):Int={
        i*2
      }

      def best(i:Int,f:scala.Function1[Int,Int]): Int ={
        return f.apply(i)
      }
}
  1. 偏函数与柯理化函数,这是函数部分最复杂的内容了。先说偏函数化(partial application),在scala中有种东西叫”“。如果下划线出现在函数的参数中,那么就意味着这个参数的值还不确定,有点类似于占位符或者通配符的概念,如果调用一个函数的时候,向一个参数中传递了”“,那么这次调用不会返回值,而是返回另一个函数,函数的入参就是刚才被"_"占位的参数列表。而柯里化函数是更加明确的使用偏函数。可以通过函数上的curried方法讲一个普通函数转为柯里化函数。例子:
def multiply(m:Int)(n:Int):Int=n*m
val multiply2=(m:Int,n:Int)=> n*m
val multiply3=multiply2.curried

相关文章

  • Scala相关文章索引(2)

    基本常识 scala编程第17章学习笔记(1)——集合类型 scala Map类型笔记 scala代码风格指南--...

  • Scala集合

    附上Effective Scala:Effective Scala学习笔记摘抄于Twitter scala文档:T...

  • 《Scala 程序设计》学习笔记 说明

    本笔记是我在学习完 Scala 语法后,重学 Scala 时记录的。笔记中的内容侧重 Scala 和 函数式语言的...

  • Scala学习笔记(八) 模式匹配

    1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函...

  • Scala学习笔记

    Scala笔记 基础教程 http://www.runoob.com/scala/currying-functio...

  • Scala基础

    学习笔记摘抄于Twitter scala文档:Twitter.github.ionext:Scala类&对象(一)...

  • Scala笔记

    Scala基础 学习twitter的scala教程的笔记 函数 函数定义,scala语法中可以使用多种方式定义函数...

  • Scala 隐式转换介绍

    本文为《快学 Scala》以及《深入了解 Scala》的读书笔记 1 概述 Scala 的隐式转换系统提供了一套良...

  • Scala语法

    转摘地址: Scala中的Map使用例子Scala 技术笔记之 Option Some None Map 不可变M...

  • scala 入门学习

    Scala学习笔记: 1.1 scala的基础语法 声明与定义(赋值):声明变量时可以指定类型,不指定也可以自动识...

网友评论

    本文标题:Scala笔记

    本文链接:https://www.haomeiwen.com/subject/jdhotttx.html