当前位置:   article > 正文

Scala 函数至简原则

Scala 函数至简原则

(1)return 可以省略,Scala 会使用函数体的最后一行代码作为返回值(2)如果函数体只有一行代码,可以省略花括号(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)(4)如果有 return,则不能省略返回值类型,必须指定(5)如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用(6)Scala 如果期望是无返回值类型,可以省略等号(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略

  1. 1 package com.atguigu.function
  2. 2
  3. 3 object TestFunction {
  4. 4 def main(args: Array[String]): Unit = {
  5. 5 // (0)函数标准写法
  6. 6 def f( s : String ): String = {
  7. 7 return s + " jinlian"
  8. 8 }
  9. 9 println(f("Hello"))
  10. 10 // 至简原则:能省则省
  11. 11 //(1) return 可以省略,Scala 会使用函数体的最后一行代码作为返回值
  12. 12 def f1( s : String ): String = {
  13. 13 s + " jinlian"
  14. 14 }
  15. 15 println(f1("Hello"))
  16. 16 //(2)如果函数体只有一行代码,可以省略花括号 类似数学上的f(x)=x+1
  17. 17 def f2(s:String):String = s + " jinlian"
  18. 18 //(3)返回值类型如果能够推断出来且省略了return,那么可以省略返回值类型的指定(:和返回值类型一起省略)
  19. 19 def f3( s : String ) =
  20. 20 {
  21. 21 s + " jinlian"
  22. 22 }
  23. 23 println(f3("Hello3"))
  24. 24 //(4)如果有 return,则不能省略返回值类型,必须指定。
  25. 25 def f4() :String = {
  26. 26 return "ximenqing4"
  27. 27 }
  28. 28 println(f4())
  29. 29 //(5)如果函数明确声明 Unit,那么即使函数体中使用 return 关键字也不起作用
  30. 30 def f5(): Unit = {
  31. 31 return "dalang5"
  32. 32 }
  33. 33 println(f5())
  34. 34 //(6)Scala 如果期望是无返回值类型,可以省略等号,将无返回值的函数称之为过程
  35. 35 def f6() {
  36. 36 "dalang6"
  37. 37 }
  38. 38 println(f6())
  39. 39 //(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
  40. 40 def f7() = "dalang7"
  41. 41 println(f7())
  42. 42 println(f7)
  43. 43 //(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
  44. 44 def f8 = "dalang"
  45. 45 //println(f8())
  46. 46 println(f8)
  47. 47 //(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略
  48. 48 def f9 = (x:String)=>{println("wusong")}
  49. 49 def f10(f:String=>Unit) = {
  50. 50 f("")
  51. 51 }
  52. 52 f10(f9)
  53. 53 println(f10((x:String)=>{println("wusong")}))
  54. 54 //匿名函数 :没有名字的函数,通过lambda表达式实现 (参数)=>{函数体}
  55. 55
  56. 56 //f9((s:String)=>{println(s)})
  57. 57 //(1)参数的类型可以省略,会根据形参进行自动的推导
  58. 58
  59. 59 //f9((s)=>{println(s)})
  60. 60 //(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过1的永远不能省略圆括号。
  61. 61
  62. 62 //f9(s =>{println(s)})
  63. 63 //(3)匿名函数如果只有一行,则大括号也可以省略
  64. 64
  65. 65 //f9(s =>println(s))
  66. 66 //(4)如果参数只出现一次,则参数省略且后面参数可以用_代替
  67. 67
  68. 68 //f9(println(_))
  69. 69 // (5) 如果可以推断出,println是一个函数体,而不是调用语句,那么(_)可以省
  70. 70
  71. 71 // f9(println)
  72. 72 //反推导 f9((s:String)=>println(s))
  73. 73 //加深大家理解
  74. 74
  75. 75 //定义一个函数,接受一个函数类型的参数,该函数类型有两个参数
  76. 76
  77. 77 def f11(fun:(Int,Int)=>Int):Int={
  78. 78
  79. 79 fun(1,2)
  80. 80
  81. 81 }
  82. 82 //println(f11((x:Int,y:Int)=>{x + y}))
  83. 83
  84. 84 //println(f11((x,y)=>x + y))
  85. 85
  86. 86 println(f11(_ + _))
  87. 87 }
  88. 88 }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/477770
推荐阅读
相关标签
  

闽ICP备14008679号