美文网首页
3、由函数提供默认参数

3、由函数提供默认参数

作者: 北方素素 | 来源:发表于2018-06-28 19:49 被阅读0次

首先我们完善了上一期的函数:

fun shouldChangeWater(
    day:String,
    temperature:Int=22,
    dirty:Int=20):Boolean{

    return when{
        temperature>30->true
        dirty>30->true
        day=="Sunday"->true
        else->false

    }
}

在Kotlin中,完成一项任务可以有多种方法,比如:

fun shouldChangeWater(
    day:String,
    temperature:Int=22,
    dirty:Int=20):Boolean{

    var isTooHot = temperature>30
    var isDirty = dirty>30
    var isSunday = day == "Sunday"

    return when{
        isTooHot->true
        isDirty->true
        isSunday->true
        else->false
    }
}

我们还可以使用只有一行的函数:

fun isTooHot(temperature: Int)=temperature>30
fun isDirty(dirty: Int)=dirty>30
fun isSunday(day: String)=day == "Sunday"

之后我们在when语句中调用:

return when{
            isTooHot(temperature)->true
            isDirty(dirty)->true
            isSunday(day)->true
            else->false
        }

我们还可以使用函数来提供默认参数,比如:

fun getDirtySensorReading()=20

fun shouldChangeWater(
            day:String,
            temperature:Int=22,
            dirty:Int=getDirtySensorReading):Boolean

注意,这代表你可以在提供默认参数函数中进行一些耗时的操作,比如读文件或者分配内存,但是这会影响到一些你的程序性能,因为默认参数是在函数被调用的时候进行计算的,同样,当你多次调用了提供默认参数的函数,也许会导致程序崩溃(因为占用内存变多了)

接下来是一个repeat关键字(类似于循环):

repeat(2){
        println("A fish is swimming")
    }

此处又重复了一遍:
Kotlin中的任何东西都是一个有值的表达式,但是有几个例外,比如for循环和while循环

下面又到了每期的练习环节:
Improve your whatShouldIDoToday() program with the new knowledge from this segment.
Add 3 more situations and activities. For example:
mood == "sad" && weather == "rainy" && temperature == 0 -> "stay in bed"
temperature > 35 -> "go swimming"
Create a single-expression function for each condition and then use it in your when expression.

Challenge

Instead of passing in the mood, get a mood string from the user.

Hint: The !! operator may come handy.
Loops

This lesson introduced the while and repeat loops. To practice using them, do the following:
Change your fortune cookie program to use repeat() instead of a for loop. What happens to the break instruction? Using the error message from the compiler, with what you've learned so far, can you think of why?
Change your fortune cookie program to use a while loop, which is the better choice when you are looping until a condition is met.

首先是挑战练习的答案:

fun main(args: Array<String>) {
   println(whatShouldIDoToday("happy", "sunny"))
   println(whatShouldIDoToday("sad"))
   print("How do you feel?")
   println(whatShouldIDoToday(readLine()!!))
}

fun isVeryHot (temperature: Int) = temperature > 35
fun isSadRainyCold (mood: String, weather: String, temperature: Int) =
mood == "sad" && weather == "rainy" && temperature == 0
fun isHappySunny (mood: String, weather: String) = mood == "happy" && weather == "sunny"
fun whatShouldIDoToday(mood: String, weather: String = "sunny", temperature: Int = 24) : String {
   return when {
      isVeryHot(temperature) -> "go swimming"
      isSadRainyCold(mood, weather, temperature) -> "stay in bed"
      isHappySunny(mood, weather) -> "go for a walk"
      else -> "Stay home and read."
   }
}

接下来如果我们在repeat语句中使用break的话,会报错,错误内容是:
break语句和continue只能在循环内部使用,说明在Kotlin中repeat不是一个循环

使用while:

fun main(args: Array<String>) {
   var fortune: String = ""
   while (!fortune.contains("Take it easy")) {
       fortune = getFortune(getBirthday())
      println("\nYour fortune is: $fortune")
   }
}

相关文章

  • 3、由函数提供默认参数

    首先我们完善了上一期的函数: 在Kotlin中,完成一项任务可以有多种方法,比如: 我们还可以使用只有一行的函数:...

  • C++之函数参数的扩展

    函数参数的默认值 C++中可以在函数声明时为参数提供一个默认值 当函数调用时没有提供参数的值,则使用默认值 参数的...

  • 七、函数参数的扩展

    1、函数参数的默认值 C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有提供参数的址,则使用默认值 参...

  • C++函数参数的扩展

    函数参数的默认值 C++中可以再函数声明时为参数提供一个默认值 当函数调用时没有提供参数的值,则使用默认值 在代码...

  • 1.0 C++远征:函数参数默认值、函数重载、内联函数

    C++远征 [TOC] 一、函数参数默认值 1.函数参数默认值的声明 2.函数参数默认值的定义 3.函数参数默认值...

  • ES6入门之函数的扩展

    函数的扩展分为以下3个部分: 1 为函数参数指定默认值2 函数的 rest 参数3 箭头函数 为函数参数指定默认值...

  • Python函数、对象几个知识点

    函数 一、参数 Python的函数参数可以定义默认值,当调用者没有提供参数时,函数在执行过程中用默认值设置该参数。...

  • Python基础-函数定义

    函数定义: 1.默认参数: 只有与默认参数不符的学生才需要提供额外的信息: 也可以不按顺序提供部分默认参数。当不按...

  • 4、函数

    函数 1、函数的默认参数 2、函数的参数默认已经定义了,不能再使用let const声明 3、箭头函数 =>

  • 数据挖掘20210108学习笔记

    函数 函数与参数 (1)形式参数与实际参数 (2)写函数的函数 function(){ } (3)默认参数:作者会...

网友评论

      本文标题:3、由函数提供默认参数

      本文链接:https://www.haomeiwen.com/subject/kcenyftx.html