码迷,mamicode.com
首页 > 其他好文 > 详细

Kotlin when 流程判断

时间:2017-09-27 18:54:38      阅读:1836      评论:0      收藏:0      [点我收藏+]

标签:ret   com   需要   多个   put   ring   函数   inpu   sys   

如果学过C或者java C#等语言。 一定熟悉SWITCH这个流程判断

但是在kotlin中却没有这个。而是 使用了When来代替。

当什么时候。

下面我觉一个简单的例子:

import java.util.*

fun main (args: Array<String>)
{
    var sc:Scanner=Scanner(System.`in`);
    var input=sc.next()
  when(input)
{
      "a"->println(”输入了a“);
      "b"->println(”输入了b“);
     //很多个
 }
    
}

解释:

 当when检测input等于下面某个值的时候就执行后面的代码。

 当检测到某个值与条件相符合的用->来连接右面要执行的代码。

 是一个简单的箭头。减号和大于号组成。

同样,When和if都可以作为表达式,也可以用来赋值。

下面的例子:

import java.util.*

fun main (args: Array<String>)
{
    var sc:Scanner=Scanner(System.`in`);
    var input=sc.next()
    var key= when(input)
    {
        "a"-> "a"
        "b"-> "b"
        else ->"没有值"
       //很多个
    }
  print("输入了:"+key)
}

值得注意的是,如果when要当作表达式,就一定要有else。 并且是最后一个表达式作为返回得值。

 

和if一样,表达式,函数都可以作为表达式来检测。(下面这个例子有很大的 问题,但是意思差不多 将就着看看把 等有好例子 我在换)

import java.util.*

fun main (args: Array<String>)
{
    var sc: Scanner = Scanner(System.`in`);
  //var value=
   var key= when(go(sc.nextInt()))
    {
        go(2014)-> "一样的值:2014"
        go(2013)-> "一样的值:2013"
        go(2012)-> "一样的值:2012"
       else ->"no value"
    }
    print(key)
}
fun go(Year:Int):Int
{
   var re= if(Year%4==0)
   {
       println("闰年")
       1
    }
    else
   {
       println("不是")
       0
   }
    return re;
}

当我输入2016的时候:

技术分享

 

 会有如此的结果,也就是说在when用函数作为一个表达式的时候会去运行这个函数。

这个需要注意一下。

 

Kotlin when 流程判断

标签:ret   com   需要   多个   put   ring   函数   inpu   sys   

原文地址:http://www.cnblogs.com/T-ARF/p/7603118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!