IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

二十七、Scala 教程: 高阶函数

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

文章永久连接:https://tech.souyunku.com/?p=3021

高阶函数(Higher-Order Function)就是能够使用其他函数作为其参数,也能够返回函数作为返回值的的函数。

scala 中 函数是一等公民,和基本的数据类型一样,可以作为参数来传递。

Scala的特性之一就是支持高阶函数。

我们用几个范例来看看 scala 中的高阶函数用法。

函数作为参数

apply() 函数使用了另外一个函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v:

object Test {
   def main(args: Array[String]) {

      println( apply( layout, 10*10) )

   }
   // 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
   def apply(f: Int => String, v: Int) = f(v)

   def layout[A](x: A) = "[" + x.toString() + "]"

}

上面代码执行结果为:

[100]

函数作为返回值

高阶函数允许返回另一个函数。

object Test {

   def main(args: Array[String]) {

    val x = multiplyBy(8)
    println( x(4))

   }

   def multiplyBy(factor:Double)=(x:Double)=>factor*x

}

运行结果为:

32、0

延伸阅读

高阶函数在 scala 中无处不在, 我们经常使用的 map 就是一个高阶函数

所有集合类型都存在 map 函数,例如 Array 的 map 函数的API具有如下形式:

def map[B](f: (A) ⇒ B): Array[B]

让我们用一个例子来看看 map 如何使用

下面所有的例子都是 得到: 3个重复的各自重复了 2 次的字符串

object Test {

   def main(args: Array[String]) {
      val mt = Array("spark","hive","hadoop").map((x:String)=>x*2)
      println(mt.mkString(","))
   }
}

执行结果如下:

sparkspark,hivehive,hadoophadoop

你还可以继续深入阅读:

干货推荐

本站推荐:精选优质专栏

附录:Scala 教程:系列文章


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(62) 打赏



未经允许不得转载:搜云库技术团队 » 二十七、Scala 教程: 高阶函数

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367