Kotlin-简约之美-基础篇(二):方法的定义和使用
2020-02-27 本文已影响0人
门心叼龙
@[toc]
方法定义
定义语法
fun [方法名] ( [参数名] : [参数类型] ) : [返回类型]{
...
return [返回值]
}
有返回值
fun multiply(x: Int, y:Int): Int {
return x * y
}
也可以转换为:
fun multiply(x: Int, y: Int): Int = x * y
还可以这样:
var multiply = { x: Int, y: Int -> x * y }
无返回值
使用Unit代替返回类型:
fun log(msg: String): Unit {
print(msg)
}
Unit也可以省去:
fun log(msg: String) {
print(msg)
}
成员方法
与Java一样通过对象.方法名的方式调用:
fun main(args: Array<String>) {
Test().method()
}
class Test{
fun method(){
print("hello")
}
}
静态方法
和Java一样通过类名.方法名的方式调用:
fun main(args: Array<String>) {
Test.com()
}
class Test{
companion object{
fun com(){
print("com")
}
}
}
顶级方法
在类外部定义的方法,可理解为静态方法,通过包名.方法名的方式调用:
package a.b.c
fun top(){
print("top")
}
fun main(args: Array<String>) {
a.b.c.top()
}
顶级方法与静态方法区别
通过反编译可以知道,其实他们不在一个类中。
如果有顶级变量会新生成一个[文件名+kt]的类,顶级方法就在其中。
命名参数
为什么要使用命名参数?因为使用命名参数可忽略参数的顺序,在调用时候非常方便,尤其是参数多的情况,调用时用参数名称和参数值同时出现的方法,同时提高代码的可读性.命名参数的语法要求:参数名和参数值用冒号分隔
通过指明参数名称,可按任意顺序传参:
fun main(args: Array<String>) {
log(name = "mao", age = 18)
}
fun log(age: Int, name: String) {
print("age:$age,name:$name")
}
可选参数
为什么要使用可选参数?因为在方法参数过多,调用显得麻烦,在方法调用时不必传递所有参数,可选参数,又称为“默认参数”
方法样例:
fun logInfo(
name: String,
age: Int,
married: Boolean = true,
language: String = "Chinese"
) {
println("[name:$name,age:$age,married:$married,language:$language");
}
必须传入未设置默认值的参数
在上述logInfo方法中,name和age未设置默认值,必须传参,其它参数可自由选择:
logInfo("ma",18)
logInfo("ma",18,false);
logInfo("ma",18,false,"English");
可变参数
- 使用vararg 修饰参数:
fun logInfos(vararg infos: String) {
for (info in infos) {
print("$info ")
}
}
- 方法调用:
logInfos("aaa","bbb","ccc")