1.声明
当前内容主要用于本人学习和复习,当前内容主要为思考main函数产生的函数创建思考
2.思考idea方式自动创建main函数
def main(args: Array[String]): Unit = {
}
def定义函数,args是String类型的数组?:Unit=
表示返回值类型为无返回值
得到结果:Array[String]就是String类型的数组,Unit表示无返回值,但是前面的没有: Unit
=
def main(args: Array[String]){
}
这个也是可以的,这说明如果当前的def定义的函数无返回值,那么可以省略:Unit=
的内容
如果创建一个函数没有参数列表的话…是否可以将参数列表也省略
3.开始创建各种函数
package com.hy.scala.start
/**
* @description 当前内容主要用于本人学习和测试当前的数组的使用
* @author hy
* @date 2020-06-24
*/
object FunctionTest {
def print(num: Int): String = {
return num + "123";
}
def print(): String = {
return "123";
}
def print2(): Int = {
return 1;
}
def print3: Array[Int] = {
return Array(1, 2, 3, 4);
return new Array[Int](0);
return new Array(0);
}
def print4 {
return "123"; // 该返回值被优化掉了,只有一个警告
println("无参数,无返回值类型的函数..."); //这个也被优化掉了
}
def print5() {
// return "123"; // 该返回值被优化掉了
println("无参数,无返回值类型的函数...");
}
def main(args: Array[String]): Unit = {
println(print3);
println(print2);
println(print);
println(print(1));
println(print4); //显示结果为()
// 报错println(print4()); //显示结果为()
println(print5); //显示结果为()
println(print5()); //显示结果为()
}
}
通过测试发现如果println一个无参无返回值的函数那么直接返回(),这个()就是Unit,可以通过new Array[T](值1,值2)
创建任意类型的数组,所以该Array相当于当前Java中ArrayList
当前的def中可以具有return,即使没有返回值(估计被编译器优化了),而且return后面可以有任何逻辑代码(也被优化掉了)
发现函数的无参数的函数没有()的调用时不能使用函数名()方式调用(直接报错),使用有参时候可以使用函数名(需要的值列表)
4.总结
1.如果在当前的函数中看到:类型=
,就表示当前函数的返回值类型
2.小心,函数中没有()时,不能使用函数名()调用,而函数中具有时,可以使用函数名和函数名()调用
3.scala中函数可以重载
以上纯属个人见解,如有问题请联系本人!