Android-Kotlin-when&类型推断
Kotlin的when表达式
TextEngine 描述文字处理对象:
package cn.kotlin.kotlin_base02 /**
* 描述文字处理对象
*
* val textContent 传入进来的文字内容 val是常量
*/
class TextEngine(val textContent: String) { /**
* 处理文字,然后返回
* 返回完整的字符串
*/
fun getDoTextAction() : String {
return """
我来到一个非常美丽的公园,走着走着,就看到了${textContent}这个牌坊,这个牌坊中的${getTextContentCount(textContent)}个字是用漂亮的笔画写的
"""
} /**
* 把存入进来的textContent,转换成几个字
* 返回字符串
*/
private fun getTextContentCount(textContent: String): String {
var result = when(textContent.length) {
1 -> "一"
2 -> "二"
3 -> "三"
4 -> "四"
5 -> "五"
6 -> "六"
else -> {
"" + textContent.length
}
}
return result
} }
main测试方法:
package cn.kotlin.kotlin_base02
fun main(args: Array<String>) {
var textEngine = TextEngine("皇后工天下")
println(textEngine.getDoTextAction())
var textEngine2 = TextEngine("风云帝王")
println(textEngine2.getDoTextAction())
var textEngine3 = TextEngine("阿巴黎大会公园")
println(textEngine3.getDoTextAction())
println("------------------------------------------------------")
// -------------- when 的第一种用法
when(130.88) {
143.98 -> println("体重比较合格...")
130.88 -> println("体重中规中矩....")
100.32 -> println("体重轻了,太瘦了...")
else -> println("体重数据未知...")
}
println("------------------------------------------------------")
// -------------- when 的第二种用法
when(3) {
1 -> {
println("我有三个人在给我干活....")
}
2 -> {
println("我看到2个人在看电影...")
}
3 -> {
println("三人行必有我吸烟....")
}
else -> println("没有人给我干活...")
}
println("------------------------------------------------------")
// -------------- when 的第三种用法
var perosnCount = 30
var whenResult = when(perosnCount) {
10 -> "这个工作室${perosnCount}个人"
20 -> "这个工作室${perosnCount}个人"
30 -> "这个工作室${perosnCount}个人"
40 -> "这个工作室${perosnCount}个人"
else -> "这个工作室 N个人在努力工作...."
}
println(whenResult)
// when还有其他用法,暂未发现
// ....
}
执行结果:

类型推断
类型推断是Kotlin内部自动处理的:
类型推断(注意:类型推断 变量和常量是一样的,只要是第一次赋值,就内部就认为第一次的类型变量类型)
定义一个常量/变量,赋值为字符串类型,Kotlin内部就已经认为此常量/变量是字符串类型了

package cn.kotlin.kotlin_base02 /**
* 类型推断(注意:类型推断 变量和常量是一样的,只要是第一次赋值,就内部就认为第一此的类型变量类型)
*/
fun main(args: Array<String>) { /**
* 定义一个常量,赋值为字符串类型,Kotlin内部就已经认为此aVal常量是字符串类型了
*/
val aVal = "AAAAAAA" /**
* 定义一个变量,赋值为字符串类型,Kotlin内部就已经认为此aVar变量是字符串类型了
*/
var aVar = "ABCDEFT" // 在给aVar赋值为99,会报错,因为aVar已经是字符串类型了
// aVar = 99 /**
* 定义一个变量,赋值为整形类型,Kotlin内部就已经认为此bVar变量是整形类型了
*/
var bVar = 1000 // 在给bVar赋值为ABCD,会报错,因为bVar已经是整形类型了
// bVar = "ABCD" /**
* 定义一个变量,赋值为浮点型类型,Kotlin内部就已经认为此cVar变量是浮点型类型了
*/
var cVar = 988.22 // 在给cVar赋值为100,会报错,因为cVar已经是浮点型类型了
// cVar = 100 // -----------------------
/**
* 以上没有指定变量类型,内部通过第一次赋值来决定类型的
* 而以下代码是,指定变量类型
*/
var zVar : String = "ABCDEF"
var z2Var : Int = 10000
var z3Var : Double = 564.45
var z4Var : Float = 1000.37f
// ......
}
Android-Kotlin-when&类型推断的更多相关文章
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- TypeScript Type Innference(类型推断)
在这一节,我们将介绍TypeScript中的类型推断.我们将会讨论类型推断需要在何处用到以及如何推断. 基础 在TypeScript中,在几个没有明确指定类型注释的地方将会使用类型推断来提供类型信息. ...
- android:inputType参数类型说明
android:inputType参数类型说明 android:inputType="none"--输入普通字符 android:inputType="text" ...
- Xamarin.Android编译CPU类型选择方式
Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...
- C++11新特性:自动类型推断和类型获取
声明:本文是在Alex Allain的文章http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-functi ...
- WebKit Web Inspector增加覆盖率分析和类型推断功能
WebKit中的Web Inspector(Web检查器)主要用于查看页面源代码.实时DOM层次结构.脚本调试.数据收集等,日前增加了两个十分有用的新功能:覆盖率分析和类型推断.覆盖率分析工具能够可视 ...
- [Effective Modern C++] Item 2. Understand auto type deduction - 了解auto类型推断
条款二 了解auto类型推断 基础知识 除了一处例外,auto的类型推断与template一样.存在一个直接的从template类型推断到auto类型推断的映射 三类情况下的推断如下所示: // ca ...
- [Effective Modern C++] Item 1. Understand template type deduction - 了解模板类型推断
条款一 了解模板类型推断 基本情况 首先定义函数模板和函数调用的形式如下,在编译期间,编译器推断T和ParamType的类型,两者基本不相同,因为ParamType常常包含const.引用等修饰符 t ...
- c# in depth 之泛型实参的类型推断
调用泛型方法时,指定类型实参常常会显得很多余.为简化工作,c#2编译器被赋予了一定的“智能”,让你在调用方法时,不需要显式声明类型实参. 在深入讨论这个主题之前,必须强调一下:类型推断只适用于泛型方法 ...
随机推荐
- ZBlog你选择PHP还是ASP?
最近趁着空闲玩了一下zblog,对于很多第一次接触zblog的博主大多都会问zblog是PHP好还是ASP好?我们应该如何选择?其实,对于这个问题我也不是很懂,我个人比较倾向于PHP.今天我就整理一下 ...
- Autofs
1. Introduction autofs is a program for automatically mounting directories on an as-needed basis. Au ...
- Python之路(第三篇):Python基本数据类型字符串(二)
一.基本数据类型1.字符串 str字符串方法介绍(二)a --expandtabs( ) expandtabs( ) 把字符串中的 tab 符号('\t')转为空格参数默认为8,注意字符串原有的空格也 ...
- 【UI测试】--安全性
- 基于注解的接口限流+统一session认证
代码心得: 一个基本的做法:对于用户身份认证做到拦截器里,针对HandlerMethod进行统一拦截认证,根据方法上的注解标识,判别是否需要身份验证,并将查找出来的User实体存入ThreadLoca ...
- 【Tomcat】Tomcat + Memcached 实现session共享
概述 web项目中,Tomcat的访问量总是有限的,这时候就需要用到Tomcat集群,多个Tomcat的时候就要考虑Session共享的问题,这里介绍一种使用Memcached做Session共享的解 ...
- linux文件系统问题:wrong fs type, bad option, bad superblock
http://blog.itpub.net/26006637/viewspace-1059946/ 报错内容: mount: wrong fs type, bad option, bad superb ...
- kbmmw 5.0 beta1 发布
经过大半年的等待,kbmmw 的新版终于来了.经过近5年的打磨, kbmmw 的版本号升级到5了. kbmMW is a portable, highly scalable, high end app ...
- 2019.01.24 bzoj2310: ParkII(轮廓线dp)
传送门 题意简述:给一个m*n的矩阵,每个格子有权值V(i,j) (可能为负数),要求找一条路径,使得每个点最多经过一次且点权值之和最大. 思路:我们将求回路时的状态定义改进一下. 现在由于求的是路径 ...
- 2018.12.22 spoj7258 Lexicographical Substring Search(后缀自动机)
传送门 samsamsam基础题. 题意简述:给出一个串,询问第kkk大的本质不同的串. 然而这就是弦论的简化版. 我们把samsamsam建出来然后贪心选择就行了. 代码: #include< ...