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编译器被赋予了一定的“智能”,让你在调用方法时,不需要显式声明类型实参. 在深入讨论这个主题之前,必须强调一下:类型推断只适用于泛型方法 ...
随机推荐
- php 数组指定位置插入数据单元
PHP array_splice() 函数 array_splice(array,offset,length,array) 参数 描述 array 必需.规定数组. offset 必需.数值.如果 ...
- Delphi XE2有什么新功能
具体内容见PDF Delphi XE2有什么新功能Delphi XE2提供(offers)了令人兴奋(exciting)的新功能,让您能够建立高度可视化的,在Windows,Mac和iOS上的业务应用 ...
- 常用到的photoshop实用设计功能都在这了!
常用到的photoshop实用设计功能都在这了!赶快收藏学起来,需转不谢~ 编辑:千锋UI设计
- Python之paramiko模块
今天我们来了解一下python的paramiko模块 paramiko是python基于SSH用于远程服务器并执行相应的操作. 我们先在windows下安装paramiko 1.cmd下用pip安装p ...
- canvas 实现时钟效果
var clock = document.getElementById('clock'); var cxt = clock.getContext('2d'); function drawClock() ...
- PHP可变函数
可变函数是指如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它 可变函数可以用来实现包括回调函数,函数表在内的用途 $str = 'strtolower'; echo $str( ...
- mysql练习题3
USE day44; -- 1 查出所有员工的名字,薪资,格式为 -- <名字:egon> <薪资:3000> SELECT '姓名:',name,'薪资:',salary f ...
- ES6通过使用babel兼容到ie9
1.打开这个地址: https://unpkg.com/babel-standalone@6/babel.min.js 新建babel.min.js,把代码复制进去,然后在jq项目里引用. 2.在下面 ...
- App测试基本流程详解(汇总整理)
前言 看过许多大神对APP测试的理解,博主总结了一下我们平时测试APP应该注意的一些测试点并结合大神的理解,总结出这篇文章. 一.测试周期 测试周期一般为两周,根据项目情况以及版本质量可适当缩短或延长 ...
- 第07章:MongoDB-CRUD操作--文档--创建
①语法 insert() save() --有修改没有新增 insertOne() [3.2版本新增]向指定集合中插入一条文档数据 insertMany() [3.2版本新增]向指定集合中插入多条文 ...