scala基础

#表达式# scala中(几乎)一切都是表达式。 #值# 值用val修饰,其值不可变 #变量# 变量使用var修饰,值可以改变 #函数# ##普通函数## 可以使用def创建函数。

scala> def addOne(m:Int):Int=m+1
addOne: (m: Int)Int

在scala中,你需要为函数参数指定类型签名。

scala> val three =addOne(2)
three: Int = 3

如果函数不带参数,可以不写括号。

scala> def three()=1+2
three: ()Int

scala> three()
res8: Int = 3

scala> three
res9: Int = 3

##匿名函数## ##部分应用(Partial application)# 可以使用下划线“_”部分应用一个函数,结果将得到另一个函数。Scala使用下划线表示不同上下文中的不同事物,你通常可以把它看作是一个没有命名的神奇通配符。在{ _ + 2 }的上下文中,它代表一个匿名参数。你可以这样使用它:

scala> def adder(m:Int,n:Int)=m+n
adder: (m: Int, n: Int)Int

scala> val add2=adder(2,_:Int)
add2: Int => Int = <function1>

scala> add2(4)
res0: Int = 6

scala> val add3=adder(_:Int,4)
add3: Int => Int = <function1>

scala> add3(4)
res1: Int = 8

你可以部分应用参数列表中的任意参数,而不仅仅是最后一个。 ##柯里化函数## #可变长度参数# 这是一个特殊的语法,可以向方法传入任意多个同类型的参数。如要在多个字符串上执行String的capitalize函数,可以这样写:

scala> def capitalizeAll(args: String*) = {
     |   args.map { arg =>
     |     arg.capitalize
     |   }
     | }
capitalizeAll: (args: String*)Seq[String]


scala> capitalizeAll("rarity", "applejack")
res7: Seq[String] = ArrayBuffer(Rarity, Applejack)

#类# ##申明类##

scala> class Calculator{
     | val brand:String="HP"
     | def add(m:Int,n:Int):Int=m+n
     | }
defined class Calculator

scala> val calc=new Calculator
calc: Calculator = Calculator@64c6e553

scala> calc.add(1,2)
res3: Int = 3

scala> calc.brand
res4: String = HP

以上的例子展示了如何在类中用def定义方法和使用val定义字段值,方法就是可以访问类的状态的函数。 ##构造函数## 构造函数不是特殊的方法,他们是除了类的方法定义之外的代码。

scala> class Calculator(brand: String) {
     |   /**
     |    * A constructor.
     |    */
     |   val color: String = if (brand == "TI") {
     |     "blue"
     |   } else if (brand == "HP") {
     |     "black"
     |   } else {
     |     "white"
     |   }
     |
     |   // An instance method.
     |   def add(m: Int, n: Int): Int = m + n
     | }
defined class Calculator

scala> val calc=new Calculator("HP")
calc: Calculator = Calculator@25e95a0e

scala> calc.color
res5: String = black

##表达式## 上面的例子说明了scala是如何面向表达式的。颜色的值就是绑定在一个if、else表达式上的。scala是高度面向表达式的:大多数东西都是表达式而非指令。 ##函数VS方法## #继承# ##重载方法## ##抽象类## #特质(Traits)# #类型#

转载于:https://my.oschina.net/kingwjb/blog/224888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值