我一般学习一门语言,大多一天能写个简单小功能。 至今遇到两个语言把我吓到了,一个是汇编,一个就是这个货,scala.
看spark源码是怎么把我逼疯的。
1
2
3
4
5
6
7
8
9
10
11
12
|
protected
lazy val baseExpression: PackratParser[Expression] =
expression ~
"["
~ expression <~
"]"
^^ {
case
base ~ _ ~ ordinal => GetItem(base, ordinal)
} |
TRUE ^^^ Literal(
true
, BooleanType) |
FALSE ^^^ Literal(
false
, BooleanType) |
cast |
"("
~> expression <~
")"
|
function
|
"-"
~> literal ^^ UnaryMinus |
ident ^^ UnresolvedAttribute |
"*"
^^^ Star(None) |
|
这飘逸的手法。。
我上一章写了hello world, 回顾下代码
1
2
3
4
5
|
object Helloworld {
def main(args:
Array
[
String
]) = {
println(
"hellowold"
)
}
}
|
为了一个(作为java程序员的)良好的习惯,我还是用main函数。然后我们学会第一个利器:
var
1
2
3
4
|
var
i =
1
;
var
j =
""
var
m =
1.0
var
n = List(
1
,
2
);
|
你会发现scala 非常像动态语言,自动识别类型,但是做个简单测试
1
2
|
var
i =
1
i =
1.0
|
如果是弱语言会正常编译运行,但是如果是强语言,会出现编译错误。 所以实际上在你声明
1
|
var
i =
1
|
的时候,已经被转译成了Int。 如果你在交互式窗口就能看到
1
2
|
var
i=
1
i:Int =
1
|
所以我在文章最开始定义的四种类型的完全写法是:
1
2
3
4
5
|
var
i:Int =
1
var
j:
String
=
""
var
m: Double =
1.0
var
m1 : Float =
1
.0f
var
n : List[Int] = List(
1
,
2
)
|
最后补充一下常识:
scala支持的是java的八种基本类型
打印一下 i, 如下:
1
2
3
4
5
6
|
object Helloworld {
def main(args:
Array
[
String
]) = {
var
i : Int =
1
;
println(i)
}
}
|
本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/1412361,如需转载请自行联系原作者