Scala的=>作用

半兽人 发表于: 2016-09-08   最后更新时间: 2016-09-19 17:12:25  
{{totalSubscript}} 订阅, 10,168 游览

类似于转化符号,=> 指明这个函数把左边的东西(任何整数x)转变成右边的东西(x + 1)。所以,这是一个把任何整数x映射为x + 1的函数。

例如:

var increase = (x: Int) => x + 1  
increase(10)
res0: Int = 11

Scala中的=>符号可以看做是创建函数实例的语法糖。例如:A => TA,B => T表示一个函数的输入参数类型是“A”“A,B”,返回值类型是T。请看下面这个实例:

scala> val f: Int => String = myInt => "The value of myInt is: " + myInt.toString()
f: Int => String = <function1>

scala> println(f(3))
The value of myInt is: 3

上面例子定义函数f:输入参数是整数类型,返回值是字符串。

另外,() => T表示函数输入参数为空,而A => Unit则表示函数没有返回值。

在提供点例子,自己慢慢感悟函数式编程:

object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    printlnobject SymbolBasic {

  def main(args: Array[Stringject SymbolBasicobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    valn(argsing]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3objectgs: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xobject Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Intobject SymbolBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2ect SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = xobject SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Intin(argsng]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((xobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(ying]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, yobjectgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * yobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Intt SymbolBasic  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defect SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3c {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (xobject SymbolBasic]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (y: Int) => x + y;
    println(b.apply(5object(argsing]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (y: Int) => x + y;
    println(b.apply(5object(argsng]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => xobject SymbolBasic {

  def main(args: Array SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Intobjectgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xt SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def dobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Intc {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    printlnobject SymbolBasic]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int(argsy[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Ints: Arrayobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xSymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (y: Int) => x + yain(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (yobject(argsay[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (yobject SymbolBasic {

  def main(argstring]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xSymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3object SymbolBasic {

  def main(argsobject SymbolBasic {

  def main(argsobject SymbolBasic {

  def main(argsobject SymbolBasic {

  def mainobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (IntmbolBasic {

  defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(dobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, IntymbolBasic {

  defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val bobjectn(argsing]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def cobjectobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2objectobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(xobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((xobject Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(ct SymbolBasic  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => xc {

  defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    valobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val bobject SymbolBasicring]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (xobjectn(argsing]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(xect SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(cobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3 Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Intobject SymbolBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = xobjectobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Intobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Intobject SymbolBasicing]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    valobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xobjectgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Intt SymbolBasic  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defect SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (y: Int) => x(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    valobject(args[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defct SymbolBasicobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(yin(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c SymbolBasic
  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Intobject(argsray[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def dobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Intobjectsic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2t SymbolBasicobject SymbolBasic {

  def main(argsobject SymbolBasic {

  def mainobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3objectn(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2ect SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    printlnobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defect SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    printlnolBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Intf mainobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val bn(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xect SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => IntolBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2objectobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Intt SymbolBasicdefobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(xobject SymbolBasic Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, yobjectgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Intobject Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(xt SymbolBasicdefobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(yobject SymbolBasicArrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: IntolBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xect SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def dobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * yobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * yobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    deft SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + yobject SymbolBasicay[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    defobject SymbolBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => xobject SymbolBasicray[Stringobject SymbolBasic {

  def main(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xsic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3t SymbolBasicc {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Intobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    printlnlBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Intect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((xobjectasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2ect SymbolBasicobject SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2object SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = xf mainobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    valn(args Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2ect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: IntolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(cgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xt SymbolBasicdefobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defect SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(dobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = xect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobjectobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, yobjectgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * yobject Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Intt SymbolBasicdefobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3object(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3object SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    printlnect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, yobjectgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3 Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    deft SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => xobject SymbolBasicay[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def SymbolBasic
  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int(argsobject SymbolBasic {

  def main(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def cobject SymbolBasicdefobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Intt SymbolBasicc {

  deff mainobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Intobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(dlBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3object(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3ect SymbolBasic

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2objectasic {

  defobject SymbolBasic {

  def main(args: Array[Stringect SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2olBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    printlnolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(xect SymbolBasicobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Intf mainobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x main(argsobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2olBasic {

  defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2ect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobjectobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xgs: Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Intt SymbolBasicdefobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((xf mainobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2ect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3object SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intect SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Intobject SymbolBasic {

  def mainobject SymbolBasic {

  def main(args: Array[Stringobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def dobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => xobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Intobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Intobject SymbolBasicobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => xobject Arrayobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    defobject SymbolBasic {

  def main(args: Array[String]) {
    /**
      * 从下面来看,首先,我定义了一个函数d,参数类型是Int=>Int的函数,返回值根据上下文推算是Int。
      * 返回值: 发现没有,返回值是x(2),它调用了传入函数。结果自然就是6了。
      */
    def d(x: (Int) => Int) = x(2);
    println(d((x: Int) => x * 3));

    // 继续增加难度,我设置2个值。仔细看变化,你会明白的
    def c(x: (Int, Int) => Int) = x(2, 3);
    println(c((x: Int, y: Int) => x * y * 3));

    // 在加深一点难度,大家看看这个函数,b第一次调用返回函数(y: Int) => x + y,在一次调用返回结果。
    // 相关文章参考快学scala 第十二章 高阶函数 145页
    val b = (x: Int) => (y: Int) => x + y;
    println(b.apply(5).apply(6));

  }
}
更新于 2016-09-19
在线,1小时前登录

查看scala更多相关的文章或提一个关于scala的问题,也可以与我们一起分享文章