Kotlin when 流程判断
如果学过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用函数作为一个表达式的时候会去运行这个函数。
这个需要注意一下。