scala> val f = (_:Int) + (_:Int)
f: (Int, Int) => Int = $$Lambda$1108/2058316797@4a8bf1dc
scala> f(1,2)
res5: Int = 3
有点不太明白占位符的使用。在scala REPL测试了下:
scala> val f2 = (_:Int) + (_:Int)
f2: (Int, Int) => Int = <function2>
scala> val f3:(Int,Int)=>Int = (a,b)=>a+b
f3: (Int, Int) => Int = <function2>
scala> val f4:(Int,Int)=>Int = (_:Int)+(_:Int)
f4: (Int, Int) => Int = <function2>
我记得最开始占位符 的意思是这么说的:
Scala语言为了让函数字面量更加精简,还可以使用下划线作为占位符,用来表示一个或多个参数。
我们用来表示的参数必须满足只在函数字面量中出现一次。
那么占位符就是用来用来处理函数字面量问题的。
scala> val list = List(1,2,3,4,5)
list: List[Int] = List(1, 2, 3, 4, 5)
scala> list.filter( _ > 3 )//等同于 x => x > 3
res0: List[Int] = List(4, 5)
上面的占位符_就是表示 函数字面量 x => x > 3 的。
不过占位符的强大之处在于他也可以使用多个占位符来表示多个参数。
scala> val nums = List(1,2,3,4,5)
nums: List[Int] = List(1, 2, 3, 4, 5)
scala> nums.reduce( _+_ ) //相当于 a + b
res2: Int = 15
上面的 _ + _ 也就是相当于 (a:Int, b:Int)=> a + b
那么最开始的困惑也就得到解决了。
(_:Int) + (_:Int) 也就是表示函数字面量 : (a,b)=>a+b
在看到 scala&gt; val f = (_:Int) + (_:Int)f: (Int, Int) =&gt; Int = $$Lambda$1108/2058316797@4a8bf1dc scala&gt; f(1,2)res5: Int = 3有点不太明白占位符的使用。在scala REPL测试了下:scala&gt; val f2 = (_:Int) + (_...
在上面的实例中,用到了Scala占位符(_ ),若读者对Scala占位符还不甚了解,可以参考学习以下七个Scala占位符的常见用法:
(1) import 导入包的所有成员,相当于Java的*,如import scala.math._。比Java方便的一点是它可以导 入某个类下的所有静态成员,Java则需要import static。
(2)占位符,表示某一个参数,这个用法比较多。比如对collection、sequence 或者本章所学的RDD调用方法map、filter、sortWith、 fore
Scala语言为了让函数字面量更加精简,还可以使用下划线作为占位符,用来表示一个或多个参数。
我们用来表示的参数必须满足只在函数字面量中出现一次。
我们用例子来看占位符的用法
scala> val list = List(1,2,3,4,5)
list: List[Int] = List(1, 2, 3, 4, 5)
scala> list.filter( _ >...
format(String format, Object … args)
格式化后的新字符串使用本地默认的语言环境。
format(Local l, String format, Pbject … args)
日期、金钱等格式化标识在不同国家地区有不同的表达方式
l为格式化过程中要应用的语言环境。如果l............
占位符语法使Scala更简洁,Scala使用下划线作为占位符,但是每个参数在方法体中仅仅能够出现一次。多个占位符表示是多个参数,并不会重复使用相同的参数。占位符语法不支持参数重用性。
scala> someNumbers.filter(_ > 5)
scala> someNumbers.filter(x=>x>5)
上面的代码,变量x已经被占位...
Hive踩坑之The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH,找不到驱动
m0_61299170:
Hive踩坑之The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH,找不到驱动
senge:
解决Hadoop集群环境启动后Live Nodes只有一个的问题