本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:Scala学习(杂1)
		本文链接:Scala学习(杂1)
简介
有一些内容不是很容易归类,篇幅也不够,但是是需要了解的部分,暂且放在这里。
标识符
除了关键字,运算符,数字,字符串和一些特殊符号,剩下的就是标识符,标识符构成了代码的重要部分。
Scala标识符可以由$,_,字母,数字,以及大部分的字符(包括中文字符)构成。
要点:
- _单独使用时不是标识符
- 数字不能作为标识符开头
- $不建议使用在标识符中
- 某些字符会被当做运算符处理,比如→,注意和->区分
_的作用
- 用在match语句里表示默认选择支
- 用在泛型里面代指某类型,比如val a: Array[_ <: Int] = Array(1)
- 用来取代实际不需要用到的变量,比如case Vec3(x, _, z) => println(x, z)
- 缩减lambda表达式,比如l.map(x => x.toDouble)可以简化为l.map(_.toDouble)
- 用于import语句中,代表任意类或者成员,比如import java.io._
==和##
Scala中,==实际上是Java的equals方法,##实际上是hashCode方法。略有不同的是,这两个方法对Java的基本类型也有效。
所以==运算符的表现和Java中不同,看下例:
| 1 2 | val s = "d" println("asd" == "as" + s)  // 输出true | 
如果想要使用Java中的==,可以使用eq运算符:
| 1 2 | val s = "d" println("asd" eq "as" + s)  // 输出false | 
格式化字符串
Scala提供了一个非常简便的语法糖来格式化字符串:
| 1 2 3 4 5 6 7 | val a = 0 val b = 0.4 println(s"a=$a, b=$b")  // 一般可以直接用$+变量名方式来访问,输出a=0, b=0.4 println(s"${a}a$b")     // 若出现歧义,可以用大括号包起来,输出0a0.4 println(s"$a$$\text{\$\$}$$b")       // 转义$,输出0$b println(f"$a")          // 注意f和s的区别,输出0 println(f"$a%08x")      // f可以使用%格式,输出00000000 | 
从此以后就告别String.format了。