标签:分享 读写 owa short 推断 添加 生成 str occurred
val myStr = "Hello Scala!" //> myStr : String = Hello Scala! val myStr2: String = "Hello Scala!" //> myStr2 : String = Hello Scala!
示例-1:
scala> val x = 10 # 定义常量x
x: Int = 10 # Scala自动推导出x的类型是Int
scala> val y:Int =20 # 显示定义Int类型常量
y: Int = 20
scala> x + x # 定义表达式
res0: Int = 20 # res0是Scala的REPL自动为没有变量名的表达式设置默认变量名,res是result的简写,0是默认变量的标号
scala> res0 # 直接引用表达式res0
res1: Int = 20 # 因为res0这个表达式没有变量名,所以REPL默认设置res1作为res0表达式结果的变量名
scala> res0*res1
res2: Int = 400
scala> val z=res0+res1+res2 # 为表达式指定变量名
z: Int = 440
scala> z = 100 # 为Z赋新值
<console>:12: error: reassignment to val # 常量Z的值不可以被改变
z = 100
^
scala> var a = 200 # 定义变量a
a: Int = 200
scala> a = 300 # 可以为变量a赋新值
a: Int = 300
scala> val d = 20
d: Int = 20
scala> val e = 30
e: Int = 30
scala> lazy val f = d * e # 定义惰性常量f
f: Int = <lazy> # f的值没有立即求解,<lazy>是惰性的标记
scala> f*10 # 当惰性常量第一次被使用时才会被求值
res3: Int = 6000
scala> f
res4: Int = 600
scala>
val x, y = 100 //> x : Int = 100
//| y : Int = 100
val test = (50, "demo") //> test : (Int, String) = (50,demo)

val t = 123 //123就是整数字面量 //> t : Int = 123
val t2 = 3.14 //3.14就是浮点数字面量 //> t2 : Double = 3.14
val t3 = true //true就是布尔型字面量 //> t3 : Boolean = true
val t4 = ‘A‘ //‘A‘就是字符字面量 //> t4 : Char = A
val t5 = "Hello" //"Hello"就是字符串字面量 //> t5 : String = Hello
"abc".intersect("bcd") //> res0: String = bc
注意:intersect()方法用来输出两个字符串中都存在的字符
scala> val a:Byte = 10
a: Byte = 10
scala> val b:Short = 20
b: Short = 20
scala> val c:Int = 30
c: Int = 30
scala> val d:Long = 40
d: Long = 40
scala> val e:Float = 50
e: Float = 50.0
scala> val f:Double = 60.98765
f: Double = 60.98765
scala> val x:Long = b # Short类型常量b赋值给Long类型常量x,低精度赋值给高精度
x: Long = 20
scala> val y:Byte = x # Long类型常量x赋值给Byte类型常量y,高精度赋值给低精度
<console>:12: error: type mismatch; # 提示类型不匹配
found : Long
required: Byte
val y:Byte = x
^
scala>
scala> val m=true m: Boolean = true scala> val n=false n: Boolean = false scala>
scala> val u:Unit = () # 显式声明Unit类型常量,()是文字量 u: Unit = () scala> val p=() p: Unit = () scala>
scala> def foo() = throw new Exception("error occurred")
foo: ()Nothing
scala>
scala> ‘a‘
res0: Char = a
scala> ‘\n‘
res1: Char =
scala> ‘\t‘
res2: Char =
scala> ‘test‘
<console>:1: error: unclosed character literal (or use " for string literal "test")
‘test‘
^
scala>
val myStr = "Hello Scala!" //> myStr : String = Hello Scala! val myStr2: String = "Hello Scala!" //> myStr2 : String = Hello Scala! val myStr3 : java.lang.String = "Hello Scala!" //> myStr3 : String = Hello Scala!
scala> val myname = "Anliven"
myname: String = Anliven
scala> s"My name is ${myname}"
res0: String = My name is Anliven
scala> """row 1
| row 2
| row 3"""
res1: String =
row 1
row 2
row 3
scala>
print("This is a ") //> This is a
print("test!") //> test!
println("This is a test!") //> This is a test!
val test = 123456 //> test : Int = 123456
println(test) //> 123456
printf("My name is %s, the ID is %d.\n", "Anliven", test)
//> My name is Anliven, the ID is 123456.
val Sum1 = 6 + 2 //> Sum1 : Int = 8 val Sum2 = (6).+(2) //> Sum2 : Int = 8
在Scala中并没有提供“++”和“--”操作符,但可以“+=”方式来实现自增或自减
var test = 1 //> test : Int = 1 test += 1 println(test) //> 2
注意:使用“+=”方式时,要使用var声明变量,否则执行时会报错。

0 到 255 间的 Unicode 字符可以用一个八进制转义序列来表示,即反斜线?\?后跟 最多三个八进制。
println("Hello World\n\nHello Scala"); //> Hello World
//|
//| Hello Scala
1 to 3 //> res0: scala.collection.immutable.Range.Inclusive = Range 1 to 3
1.to(3) //> res1: scala.collection.immutable.Range.Inclusive = Range 1 to 3
1 until 3 //> res2: scala.collection.immutable.Range = Range 1 until 3
1 to 10 by 3 //> res3: scala.collection.immutable.Range = Range 1 to 10 by 3
0.5f to 5.9f by 0.8f //> res4: scala.collection.immutable.NumericRange[Float] = NumericRange 0.5 to 5.
//| 9 by 0.8
scala> var x = 10
x: Int = 10
scala> var y = 20
y: Int = 20
scala> x + y
res0: Int = 30
scala> {x*2;y*2;x*y} # 代码块也是一个表达式,其最终求得的值是最后一个表达式的值。
res1: Int = 200
scala> {
| x + y
| x + x + y + y
| }
res2: Int = 60
scala>
def functionName ([参数列表]) : [return type] = {
function body
return [expr]
}
def hello(name: String): String = {
s"hello, ${name}"
} //> hello: (name: String)String
hello("Anliven") //> res0: String = hello, Anliven
def hello2(name: String) = {
s"hello, ${name}"
} //> hello2: (name: String)String
hello2("Anliven") //> res1: String = hello, Anliven
def add(x: Int, y: Int) = x + y //> add: (x: Int, y: Int)Int
add (1,2) //> res2: Int = 3
if(布尔表达式)
{
// 如果布尔表达式为 true 则执行该语句块
}
if(布尔表达式){
// 如果布尔表达式为 true 则执行该语句块
}else{
// 如果布尔表达式为 false 则执行该语句块
}
一些示例:
if (true) 1 else 2 //> res0: Int = 1 if (true) 3 else 4 //> res1: Int = 3 val a = 1 //> a : Int = 1 if (a == 1) a //> res2: AnyVal = 1 if (a != 1) "not one" //> res3: Any = () # 表达式不返回值,结果就是Unit的文字量(), if (a != 1) "not one" else a //> res4: Any = 1
scala> val x = 6
x: Int = 6
scala> :paste
// Entering paste mode (ctrl-D to finish)
if (x>0) {println("This is a positive number")
} else {
println("This is not a positive number")
}
// Exiting paste mode, now interpreting.
This is a positive number
scala>
scala> :paste
// Entering paste mode (ctrl-D to finish)
if (x>0) {
println("This is a positive number")
} else if (x==0) {
println("This is a zero")
} else {
println("This is a negative number")
}
// Exiting paste mode, now interpreting.
This is a positive number
scala>
scala> val test = if (x>0) 1 else -1
test: Int = 1
scala>
var x = 3 //> x : Int = 3
while (x > 0) {
x -= 1
printf("i is %d\n", x)
} //> i is 2
//| i is 1
//| i is 0
var y = 0 //> y : Int = 0
do {
y += 1
println(y)
} while (y < 3) //> 1
//| 2
//| 3
for (变量<-表达式) 语句块 // 其中,“变量<-表达式”被称为生成器(generator)
for (i <- 1 to 3) println(i) //> 1
//| 2
//| 3
for (i <- 1 to 3 by 2) println(i) //> 1
//| 3
for (i <- 1 to 3 if i % 2 == 0) println(i) //> 2
for (i <- 1 to 3; j <- 1 to 3) println(i * j) //> 1
//| 2
//| 3
//| 2
//| 4
//| 6
//| 3
//| 6
//| 9
for (i <- 1 to 3 if i % 2 == 0; j <- 1 to 3 if j != i) println(i * j)
//> 2
//| 6
for (i <- 1 to 5 if i % 2 == 0) yield i //> res0: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4)
val test = List("Aaaa", "Bbb", "Cccc") //> test : List[String] = List(Aaaa, Bbb, Cccc)
for (
demo <- test
) println(demo) //> Aaaa
//| Bbb
//| Cccc
for {
demo <- test
if (demo.length > 3)
} println(demo) //> Aaaa
//| Cccc
val result_for = for {
demo <- test
demo1 = demo.toUpperCase()
if (demo1 != "")
} yield (demo1) //> result_for : List[String] = List(AAAA, BBB, CCCC)
object first {
val result_try = try {
Integer.parseInt("dog")
} catch {
case _: Throwable => 0
} finally {
println("always be printed")
} //> always be printed
//| result_try : Int = 0
}
object first {
val code = 3 //> code : Int = 3
val result_match = code match {
case 1 => "one"
case 2 => "two"
case _ => "others"
} //> result_match : String = others
}
package helloscala
import java.io.PrintWriter
object helloscala {
def main(args: Array[String]) {
val out = new PrintWriter("output.txt")
for (i <- 1 to 5) out.println(i)
out.close()
}
}
读取文本文件中的行 使用Scala.io.Source的getLines方法实现对文件中所有行的读取。
package helloscala
import scala.io.Source
object helloscala {
def main(args: Array[String]) {
val inputFile = Source.fromFile("output.txt")
val lines = inputFile.getLines
for (line <- lines) println(line)
inputFile.close()
}
}
标签:分享 读写 owa short 推断 添加 生成 str occurred
原文地址:https://www.cnblogs.com/anliven/p/10041570.html