如果学过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. 什么是Ajax和JSON,它们的优缺点

    什么是Ajax??? 术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验. Ajax它是“Asynchronous JavaScript + XML的简写” 定义Ajax: Aj ...

  2. Visual C++中error spawning cl.exe解决方法

    点击“Tools”,选择“选项”,选择“选项”中的“目录” 目录的目录下有四个选项 需要对它们设置正确的路径 我是按照默认路径安装的 可执行文件: C:\Program Files\Microsoft ...

  3. Python基础学习三 字符串

    字符串方法 slit = ['a', 'b', 'c', 'd', 'f', 'g'] s2='hhhhhhhhhh' tu = (1,2,3,4,5) d={'name':'nnn','age':1 ...

  4. C#使用 SharpAVI进行 屏幕录制

    再 nuget 中 搜索 shapAvi 并添加引用 github 地址:https://github.com/baSSiLL/SharpAvi using SharpAvi; using Sharp ...

  5. Super Jumping! Jumping! Jumping(最大递增子序列的和)

    Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. May ...

  6. 367. Valid Perfect Square判断是不是完全平方数

    [抄题]: Given a positive integer num, write a function which returns True if num is a perfect square e ...

  7. Hyperledger Fabric开发

    打开Hyperledger Fabric在线开发文档:https://hyperledger-fabric.readthedocs.io 建议在Mac或Linux环境下操作,因为文档基本上是按照Mac ...

  8. 为什么rand和srand总是同时出现?

    如果没有srand,那么rand在我电脑上运行每次返回的随机数是一样的.如果如果先调用srand,而且srand的参数不一样,那么最后产生的随机数就会不一样?那怎么然srand的参数是不一样的呢? 是 ...

  9. Smarty3——从配置文件获取的变量

    再使用配置变量前要 引入配置变量即:{$config_load file=‘file_path’}$marty3中可以从配置文件中 用 # 号包起来引用配置文件中的变量({#config_var_na ...

  10. JMS-消息中间件的应用02-安装ActiveMQ-来自慕课学习-新手学习

    What is ActiveMQ?       -----突然好想打英文,好奇怪 请看来自官网的介绍: Apache ActiveMQ ™ is the most popular and powerf ...