如果学过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 流程判断的更多相关文章

  1. python学习笔记(基础三:if else流程判断、while循环、for循环)

    if else流程判断 getpass在pycharm中无法使用,在命令行窗口中进入python环境可以使用. import getpassusername = input("usernam ...

  2. Kotlin if else判断

    Kotlin的if相对与java,有着较为灵活的用法. if是用来判断. if在Kotlin里面可以作为表达式来使用. 如果熟悉C java C#等 A>B:A?B这个判断应该是很熟悉,而Kot ...

  3. kotlin 之相等判断

    在kotlin 中存在二种相等的判断: 1.引用相等 也就是说,两个引用指向同一个对象,使用===操作 ,相反操作为!==来判断 2.结构相等 使用equals 函数相等和==操作符 a?.equal ...

  4. python之路-day1-if...else...流程判断

    判断输入的用户名:#Author:zww _username = "zww" _password = " username = input("username: ...

  5. python中if else流程判断

    _username='Lily' _password=' username=input("username:") password=input("password:&qu ...

  6. Oracle PLSQL Demo - 03.流程判断[IF ELEIF ELSE]

    declare v_job ) := 'Programmer'; v_sal number; begin if v_job = 'Programmer' then v_sal :; elsif v_j ...

  7. Mysql查询结果只有一条的情况下把值赋值给变量,再用if else 流程判断

    BEGIN set @n=(SELECT count(day) from log where day=CURDATE()); THEN call m_LogInsert(); ELSE call m_ ...

  8. 学习python第二天 流程判断

    while循环age_of_Jim = 56 count = 0 #开始计数while True: #循环代码 if count ==3:#如果次数=3 break#退出 guess_age = in ...

  9. Day1:If else流程判断

    一.if...else语句 if 条件成立: 执行条件成立后的代码 else: 执行条件不成立的代码 注:注意有冒号,python会强制缩进!一般语句都必须顶格写,缩进是缩进一个tab键,等于4个空格 ...

随机推荐

  1. elasticsearch5.6.8中文分词器

    安装分词器,务必确保版本一致! 下载地址:https://github.com/medcl/elasticsearch-analysis-ik 为了保证一致,我特地将elasticsearch进行降级 ...

  2. day5心得

    import 模块 1.定义: 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件(文件名test.py 模块名:test) 2导入方法 ...

  3. SMO是英文SQL Server Management Objects的缩写(上一篇文章的补充)

    最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...

  4. Java微信公众平台开发(六)--微信开发中的token获取

    转自:http://www.cuiyongzhi.com/post/44.html (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access ...

  5. linux中ftp配置文件详解

    vsftpd配置文件采用"#"作为注释符,以"#"开头的行和空白行在解析时将被忽略,其余的行被视为配置命令行,每个配置命令的"="两边不要留 ...

  6. POJ1657

    1.题目链接地址 http://poj.org/problem?id=1657 2.源代码 #include<iostream> using namespace std; int main ...

  7. tomcat 7 7.0.73 url 参数 大括号 {} 不支持 , 7.0.67支持

    7.0.73 url有JSON.stringify一个对象,然后作为参数拼接.结果请求报400错误,但是tomcat 7.0.67版本没有问题,猜测是高级版本对url参数比较严格.  处理方法:   ...

  8. ref & out - C#中的参数传递

    [ref & out - C#中的参数传递] ref与out均指定函数参数按引用传递,惟一的不同是,ref传递的参数必须初始化,而out可以不用. ref与out无法作为重载的依据,即ref与 ...

  9. 在tomcat6.5+上配置虚拟主机

    一 准备(必须配置,否则不能解析域名到ip) 我们将配置两台虚拟主机,假设域名分别为 www.test1.com www.test2.com 为了测试方便,请在客户机的: Win2K://WINNT/ ...

  10. 算法描述》关于LIS的nlogn方法

    上次TYVJ有一道裸LIS,然而我当时直接打了一个N^2暴力就草草了事,然后就ZZ了,只拿了60分,其实NlogN的LIS和N^2的差的不多,只是没有N^2,好想罢了,鉴于某学弟的要求,所以就重现一下 ...