Scala内建控制、类和对象折叠
一、简答题
1.Scala的程序入口是什么
scala的程序入口是main()函数。
2. Scala对外访问变量的原因是什么?
外部访问变量的原因主要有以下几点:
可读性和可维护性:在大型项目中,通过将变量定义为外部访问,可以使得代码更易于理解和维护。因为外部变量通常用于封装一些状态或数据,这对于理解代码的行为和状态非常有帮助。
封装和抽象:外部访问变量允许你隐藏实现细节,只暴露必要的接口。这有助于实现更好的封装和抽象,使代码更加模块化。
可重用性:通过将变量设置为外部访问,你可以在不同的类或函数中重复使用这些变量。这对于实现跨模块的通信和数据共享非常有用。
扩展性:外部访问变量可以用于扩展功能。例如,你可以在父类中定义一个外部变量,然后在子类中重写它,从而实现不同的行为。
共享状态:在一些情况下,你可能需要在多个类或对象之间共享状态。通过将变量设置为外部访问,你可以在多个类或对象之间共享和修改这些变量的值。
二、编程题
1.打印数字1~100,每行包含一组5个数,例如:
1,2,3,4,5
6,7,8,9,10
...
文字1~100,所有3和5的倍教除外
1
for (i <- 1 to 100 by 5) {
for (j <- i to (i + 4)) {
if (j % 3 != 0 && j % 5 != 0) {
print(j + ",")
}
}
println()
}
2.写一个表达式,打印数字1~100,所有3和5的倍数除外。3的倍数打印“triple” ,5的倍数打印“five”,3和5的倍数打印“triple_five”。
for (i <- 1 to 100) {
if (i % 3 == 0 && i % 5 == 0) {
println(i + " => triple_five")
} else if (i % 3 == 0) {
println(i + " => triple")
} else if (i % 5 == 0) {
println(i + " => five")
} else {
println(i)
}
}
3.写一个表达式,要求给一个双精度,如果值大于0返回“greater”,等于0返回“equal”,否则返回“less”。表达式的值赋给一个变量result。
打印result。
val value = -5.0 // 为给定的双精度值
val result = if (value > 0) "greater" else if (value == 0) "equal" else "less"
println(result)
4.根据参数n,输出等腰三角形,例如n=4:
#
##
###
####
def printTriangle(n: Int): Unit = {
for (i <- 1 to n) {
// 输出空格
for (j <- 1 to n - i) {
print(" ")
}
// 输出星号
for (j <- 1 to 2 * i - 1) {
print("*")
}
println()
}
}
// 调用函数,输出等腰三角形
printTriangle(5)
5.定义一个 Point,使得可以不用 new,而是用 Point(3,4)创建对象,并求横纵坐标的和。
object Point {
def apply(x: Double, y: Double): Point = new Point(x, y)
}
class Point(val x: Double, val y: Double) {
def sum(): Double = x + y
}
// 创建Point对象
val point = Point(3, 4)
// 计算横纵坐标之和
println(point.sum()) // 输出: 7.0
6.定义一个学生注册信息类,要求有姓名、电话、专业和身份证号。其中你可以选择用姓名和电话或姓名身份证号注册。电话、姓名和身份证号为不可修改属性,专业为非必要属性且可修改(提示:
提供2个构造器),如果姓名和电话或姓名和身份证号相等,可认为是同一个学生,打印输出(“信息已经注册或请核对信息”)。
(待