1. 变量和数据类型
1.1 for begining —— hello world
新建hello.scala文件,注意object名字与文件名一致。
object hello { def main(args:Array[String]): Unit = { println("hello world!") }
}
运行后打印结果如下:
hello world!Process finished with exit code 0
可以不添加返回值类型,scala自动推断,下面输出的结果是一致的。
object hello { def main(args:Array[String]) = { println("hello world!") }
}
1.2 数据类型
重要的变量类型如下:
浮点数默认是Double类型,上表中出现了错误。
注:
(1)上述类型基本和c或c++语言类型一致,Scala在此基础上有所拓展:
其中Byte关键字等同于c语言中的char关键字,表示有符号8bit数据;
(2)在Scala中,Char关键字表示无符号的16bit数据,数据范围为0~65535。
可以看下下面的举例:
scala> val a = 1.22
a: Double = 1.22scala> val b = 2.88
b: Double = 2.88scala> val c = a + b
c: Double = 4.1scala> println(c)
4.1
不加f关键字,则必定是Double的类型的数据,只有加了在浮点数后加了f关键字后,才表示数据为单精度浮点数,即是32bit的浮点数类型。
注:
与f类似,若要表示数据为长整型(long)的数据,需要在后面加上L或l关键字作为补充
在scala中使用方法如下,新建variable.scala文件,并添加如下代码:
object variable { def main(args:Array[String])= { val a = 1.22 val b = 2.88 val c = a + b println(f"c == $c%.2f") }
}
最后打印的结果如下:
c == 4.10Process finished with exit code 0
注:
println函数中添加f关键字起到格式化字符串打印的效果,这个和c语言不同,同时还可以添加s关键字执行特定的表达式。
1.3 SpinalHDL运算拓展
在SpinalHDL中,可以使用 ": ="对val变量进行赋值操作。
object variable { def main(args:Array[String])= { val a = 1.22 val b = 2.88 val c = a + b print(f"c == $c%.2f\n") val d = 0 d := a * b println(f"d == $d%.2f") }
}
上述代码中,使用scala编译是会出错的,采用SpinalHDL则不会。
var d = 0.0 d = a * b println(f"d == $d%.2f")
修改后代码可以正确执行。