Files
reference/docs/kotlin.html
2024-09-29 10:30:54 +00:00

805 lines
148 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>Kotlin 备忘清单
&#x26; kotlin cheatsheet &#x26; Quick Reference</title>
<meta content="width=device-width, initial-scale=1" name="viewport">
<meta description="Kotlin 备忘清单是 Kotlin 编程语言的单页参考表
Kotlin 简介,为开发人员分享快速参考备忘单。">
<meta keywords="kotlin,reference,Quick,Reference,cheatsheet,cheat,sheet">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%221em%22%20width%3D%221em%22%3E%20%3Cpath%20d%3D%22m21.66%2010.44-.98%204.18c-.84%203.61-2.5%205.07-5.62%204.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2%201.17-2.42%203.16-3.07%206.5-2.28l1.67.39c4.19.98%205.47%203.05%204.49%207.23Z%22%20fill%3D%22%23c9d1d9%22%2F%3E%20%3Cpath%20d%3D%22M15.06%2019.39c-.62.42-1.4.77-2.35%201.08l-1.58.52c-3.97%201.28-6.06.21-7.35-3.76L2.5%2013.28c-1.28-3.97-.22-6.07%203.75-7.35l1.58-.52c.41-.13.8-.24%201.17-.31-.3.61-.54%201.35-.74%202.2l-.98%204.19c-.98%204.18.31%206.24%204.48%207.23l1.68.4c.58.14%201.12.23%201.62.27Zm2.43-8.88c-.06%200-.12-.01-.19-.02l-4.85-1.23a.75.75%200%200%201%20.37-1.45l4.85%201.23a.748.748%200%200%201-.18%201.47Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3Cpath%20d%3D%22M14.56%2013.89c-.06%200-.12-.01-.19-.02l-2.91-.74a.75.75%200%200%201%20.37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3C%2Fsvg%3E" type="image/svg+xml">
<link href="../style/style.css" rel="stylesheet">
<link href="../style/katex.css" rel="stylesheet">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="javascript:void(0);" class="searchbtn" id="searchbtn"><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><span>搜索</span><span>⌘K</span></a><a href="https://github.com/jaywcjlove/reference/blob/main/docs/kotlin.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script src="../js/dark.js?v=1.6.0"></script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap h1body-exist max-container"><header class="wrap-header h1wrap"><h1 id="kotlin-备忘清单"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 32 32" height="1em" width="1em">
<path d="m1.734 32 15.068-15.333L32 32zM0 0h16L0 16.667zm17.865 0L0 18.667V32L32 0z"></path>
</svg>
<a aria-hidden="true" tabindex="-1" href="#kotlin-备忘清单"><span class="icon icon-link"></span></a>Kotlin 备忘清单</h1><div class="wrap-body">
<p>Kotlin 备忘清单是 <a href="https://kotlinlang.org">Kotlin</a> 编程语言的单页参考表</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#kotlin-简介">Kotlin 简介</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#main-函数">main() 函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#打印声明">打印声明</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#注释">注释</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#执行顺序">执行顺序</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#数据类型和变量">数据类型和变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#可变变量">可变变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#不可变变量">不可变变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#类型推断">类型推断</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串连接">字符串连接</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串模板">字符串模板</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#内置属性和函数">内置属性和函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符转义序列">字符转义序列</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#算术运算符">算术运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#操作顺序">操作顺序</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#增强赋值运算符">增强赋值运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#递增和递减运算符">递增和递减运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#数学库">数学库</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#条件表达式">条件表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#if-表达式">if 表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#else-表达式">else 表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#else-if-表达式">Else-If 表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#比较运算符">比较运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逻辑运算符">逻辑运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#and-运算符-">AND 运算符: &#x26;&#x26;</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#或运算符">或运算符:||</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#not-运算符">NOT 运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#评估顺序">评估顺序</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#等式运算符">等式运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#嵌套条件">嵌套条件</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#当表达式">当表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#范围运算符">范围运算符</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#collections">Collections</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#不可变列表">不可变列表</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#可变列表">可变列表</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#访问列表元素">访问列表元素</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#大小属性">大小属性</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#列表操作">列表操作</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#不可变集">不可变集</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#可变集">可变集</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#访问集合元素">访问集合元素</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#不可变映射">不可变映射</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#可变映射">可变映射</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#检索映射键和值">检索映射键和值</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#添加和删除地图条目">添加和删除地图条目</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#函数">函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#函数-1">函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#函数参数">函数参数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#默认参数">默认参数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#命名参数">命名参数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#返回声明">返回声明</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#单表达式函数">单表达式函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#函数字面量">函数字面量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#简单的高阶函数">简单的高阶函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#以匿名函数作为参数的函数">以匿名函数作为参数的函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#lambda表达式方式传入函数参数">Lambda表达式方式传入函数参数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#扩展函数">扩展函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#运算符重载">运算符重载</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#中缀表达式">中缀表达式</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#类"></a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#类实例">类实例</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#主构造函数">主构造函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#次构造函数">次构造函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#类示例">类示例</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#成员函数">成员函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#初始化块">初始化块</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#data数据类">Data数据类</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#伴生对象">伴生对象</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#内部类">内部类</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#object单例类">object单例类</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#另见">另见</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="kotlin-简介"><a aria-hidden="true" tabindex="-1" href="#kotlin-简介"><span class="icon icon-link"></span></a>Kotlin 简介</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="main-函数"><a aria-hidden="true" tabindex="-1" href="#main-函数"><span class="icon icon-link"></span></a>main() 函数</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Code goes here</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>main() 函数是每个 Kotlin 程序的起点,在执行之前必须包含在代码中</p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="打印声明"><a aria-hidden="true" tabindex="-1" href="#打印声明"><span class="icon icon-link"></span></a>打印声明</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Greetings, earthling!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Take me to "</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"your leader."</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">/*
</span></span><span class="code-line"><span class="token comment">打印:
</span></span><span class="code-line"><span class="token comment">Greetings, earthling!
</span></span><span class="code-line"><span class="token comment">Take me to your leader.
</span></span><span class="code-line"><span class="token comment">*/</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="注释"><a aria-hidden="true" tabindex="-1" href="#注释"><span class="icon icon-link"></span></a>注释</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// 这是单行注释</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">/*
</span></span><span class="code-line"><span class="token comment">这个
</span></span><span class="code-line"><span class="token comment">注释
</span></span><span class="code-line"><span class="token comment">用于
</span></span><span class="code-line"><span class="token comment">
</span></span><span class="code-line"><span class="token comment">
</span></span><span class="code-line"><span class="token comment">*/</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="执行顺序"><a aria-hidden="true" tabindex="-1" href="#执行顺序"><span class="icon icon-link"></span></a>执行顺序</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"I will be printed first."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"I will be printed second."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"I will be printed third."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="数据类型和变量"><a aria-hidden="true" tabindex="-1" href="#数据类型和变量"><span class="icon icon-link"></span></a>数据类型和变量</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="可变变量"><a aria-hidden="true" tabindex="-1" href="#可变变量"><span class="icon icon-link"></span></a>可变变量</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> age <span class="token operator">=</span> <span class="token number">25</span>
</span><span class="code-line">age <span class="token operator">=</span> <span class="token number">26</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="不可变变量"><a aria-hidden="true" tabindex="-1" href="#不可变变量"><span class="icon icon-link"></span></a>不可变变量</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">val</span> goldenRatio <span class="token operator">=</span> <span class="token number">1.618</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="类型推断"><a aria-hidden="true" tabindex="-1" href="#类型推断"><span class="icon icon-link"></span></a>类型推断</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// 以下变量在双引号内分配了一个文本值</span>
</span><span class="code-line"><span class="token comment">// 因此推断的类型是 String</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">var</span> color <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Purple"</span></span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串连接"><a aria-hidden="true" tabindex="-1" href="#字符串连接"><span class="icon icon-link"></span></a>字符串连接</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> streetAddress <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"123 Main St."</span></span>
</span><span class="code-line"><span class="token keyword">var</span> cityState <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Brooklyn, NY"</span></span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>streetAddress <span class="token operator">+</span> <span class="token string-literal singleline"><span class="token string">" "</span></span> <span class="token operator">+</span> cityState<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: 123 Main St. Brooklyn, NY </span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串模板"><a aria-hidden="true" tabindex="-1" href="#字符串模板"><span class="icon icon-link"></span></a>字符串模板</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> address <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"123 Main St."</span></span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"The address is </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">address</span></span><span class="token string">"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: The address is 123 Main St.</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="内置属性和函数"><a aria-hidden="true" tabindex="-1" href="#内置属性和函数"><span class="icon icon-link"></span></a>内置属性和函数</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> monument <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"the Statue of Liberty"</span></span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>monument<span class="token punctuation">.</span><span class="token function">capitalize</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: The Statue of Liberty</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>monument<span class="token punctuation">.</span>length<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: 21</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-3"><div class="wrap-header h3wrap"><h3 id="字符转义序列"><a aria-hidden="true" tabindex="-1" href="#字符转义序列"><span class="icon icon-link"></span></a>字符转义序列</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-3-->
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"\"Excellent!\" I cried. \"Elementary,\" said he."</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 打印: "Excellent!" I cried. "Elementary," said he. </span>
</span></code></pre>
<!--rehype:className=wrap-text-->
<ul>
<li><code>\n</code> 插入新行</li>
<li><code>\t</code> 插入标签</li>
<li><code>\r</code> 插入回车</li>
<li><code>\'</code> 插入单引号</li>
<li><code>\"</code> 插入双引号</li>
<li><code>\\</code> 插入反斜杠</li>
<li><code>\$</code> 插入美元符号</li>
</ul>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="算术运算符"><a aria-hidden="true" tabindex="-1" href="#算术运算符"><span class="icon icon-link"></span></a>算术运算符</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token number">5</span> <span class="token operator">+</span> <span class="token number">7</span> <span class="token comment">// 12</span>
</span><span class="code-line"><span class="token number">9</span> <span class="token operator">-</span> <span class="token number">2</span> <span class="token comment">// 7</span>
</span><span class="code-line"><span class="token number">8</span> <span class="token operator">*</span> <span class="token number">4</span> <span class="token comment">// 32</span>
</span><span class="code-line"><span class="token number">25</span> <span class="token operator">/</span> <span class="token number">5</span> <span class="token comment">// 5 </span>
</span><span class="code-line"><span class="token number">31</span> <span class="token operator">%</span> <span class="token number">2</span> <span class="token comment">// 1 </span>
</span></code></pre>
<p><code>+</code> 加法、<code>-</code> 减法、<code>*</code> 乘法、<code>/</code> 除法和 <code>%</code> 模数</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="操作顺序"><a aria-hidden="true" tabindex="-1" href="#操作顺序"><span class="icon icon-link"></span></a>操作顺序</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token number">5</span> <span class="token operator">+</span> <span class="token number">8</span> <span class="token operator">*</span> <span class="token number">2</span> <span class="token operator">/</span> <span class="token number">4</span> <span class="token operator">-</span> <span class="token number">3</span> <span class="token comment">// 6 </span>
</span><span class="code-line"><span class="token number">3</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token number">4</span> <span class="token operator">+</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span> <span class="token comment">// 7</span>
</span><span class="code-line"><span class="token number">4</span> <span class="token operator">*</span> <span class="token number">2</span> <span class="token operator">+</span> <span class="token number">1</span> <span class="token operator">*</span> <span class="token number">7</span> <span class="token comment">// 15</span>
</span><span class="code-line"><span class="token number">3</span> <span class="token operator">+</span> <span class="token number">18</span> <span class="token operator">/</span> <span class="token number">2</span> <span class="token operator">*</span> <span class="token number">1</span> <span class="token comment">// 12 </span>
</span><span class="code-line"><span class="token number">6</span> <span class="token operator">-</span> <span class="token number">3</span> <span class="token operator">%</span> <span class="token number">2</span> <span class="token operator">+</span> <span class="token number">2</span> <span class="token comment">// 7 </span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="增强赋值运算符"><a aria-hidden="true" tabindex="-1" href="#增强赋值运算符"><span class="icon icon-link"></span></a>增强赋值运算符</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> batteryPercentage <span class="token operator">=</span> <span class="token number">80</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 长语法</span>
</span><span class="code-line">batteryPercentage <span class="token operator">=</span> batteryPercantage <span class="token operator">+</span> <span class="token number">10</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 带有增广赋值运算符的短句法</span>
</span><span class="code-line">batteryPercentage <span class="token operator">+=</span> <span class="token number">10</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="递增和递减运算符"><a aria-hidden="true" tabindex="-1" href="#递增和递减运算符"><span class="icon icon-link"></span></a>递增和递减运算符</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> year <span class="token operator">=</span> <span class="token number">2019</span>
</span><span class="code-line">year<span class="token operator">++</span> <span class="token comment">// 2020</span>
</span><span class="code-line">year<span class="token operator">--</span> <span class="token comment">// 2019 </span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="数学库"><a aria-hidden="true" tabindex="-1" href="#数学库"><span class="icon icon-link"></span></a>数学库</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line">Math<span class="token punctuation">.</span><span class="token function">pow</span><span class="token punctuation">(</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">3.0</span><span class="token punctuation">)</span> <span class="token comment">// 8.0</span>
</span><span class="code-line">Math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">)</span> <span class="token comment">// 6 </span>
</span><span class="code-line">Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">)</span> <span class="token comment">// 12</span>
</span><span class="code-line">Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span><span class="token number">13.7</span><span class="token punctuation">)</span> <span class="token comment">// 14</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="条件表达式"><a aria-hidden="true" tabindex="-1" href="#条件表达式"><span class="icon icon-link"></span></a>条件表达式</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="if-表达式"><a aria-hidden="true" tabindex="-1" href="#if-表达式"><span class="icon icon-link"></span></a>if 表达式</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> morning <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>morning<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Rise and shine!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token comment">// 打印: Rise and shine!</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="else-表达式"><a aria-hidden="true" tabindex="-1" href="#else-表达式"><span class="icon icon-link"></span></a>else 表达式</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> rained <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>rained<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"今天不需要给植物浇水。"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"植物需要浇水!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token comment">// 打印: 植物需要浇水!</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="else-if-表达式"><a aria-hidden="true" tabindex="-1" href="#else-if-表达式"><span class="icon icon-link"></span></a>Else-If 表达式</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> age <span class="token operator">=</span> <span class="token number">65</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>age <span class="token operator">&#x3C;</span> <span class="token number">18</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"您被视为未成年人"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>age <span class="token operator">&#x3C;</span> <span class="token number">60</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"您被视为成年人"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"你被认为是高级"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 打印: 你被认为是高级</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="比较运算符"><a aria-hidden="true" tabindex="-1" href="#比较运算符"><span class="icon icon-link"></span></a>比较运算符</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> myAge <span class="token operator">=</span> <span class="token number">19</span>
</span><span class="code-line"><span class="token keyword">var</span> sisterAge <span class="token operator">=</span> <span class="token number">11</span>
</span><span class="code-line"><span class="token keyword">var</span> cousinAge <span class="token operator">=</span> <span class="token number">11</span>
</span><span class="code-line">
</span><span class="code-line">myAge <span class="token operator">></span> sisterAge <span class="token comment">// true</span>
</span><span class="code-line">myAge <span class="token operator">&#x3C;</span> cousinAge <span class="token comment">// false</span>
</span><span class="code-line">myAge <span class="token operator">>=</span> cousinAge <span class="token comment">// true</span>
</span><span class="code-line">myAge <span class="token operator">&#x3C;=</span> sisterAge <span class="token comment">// false</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="逻辑运算符"><a aria-hidden="true" tabindex="-1" href="#逻辑运算符"><span class="icon icon-link"></span></a>逻辑运算符</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> humid <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> raining <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> jacket <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span><span class="token operator">!</span>humid<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: false</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>jacket <span class="token operator">&#x26;&#x26;</span> raining<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: true</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>humid <span class="token operator">||</span> raining<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// 打印: true</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="and-运算符-"><a aria-hidden="true" tabindex="-1" href="#and-运算符-"><span class="icon icon-link"></span></a>AND 运算符: &#x26;&#x26;</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> humid <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> raining <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> shorts <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line"><span class="token keyword">var</span> sunny <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// true AND true</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>humid <span class="token operator">&#x26;&#x26;</span> raining<span class="token punctuation">)</span> <span class="token comment">// true</span>
</span><span class="code-line"><span class="token comment">// true AND false</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>humid <span class="token operator">&#x26;&#x26;</span> shorts<span class="token punctuation">)</span> <span class="token comment">// false</span>
</span><span class="code-line"><span class="token comment">// false AND true</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>sunny <span class="token operator">&#x26;&#x26;</span> raining<span class="token punctuation">)</span> <span class="token comment">// false</span>
</span><span class="code-line"><span class="token comment">// false AND false</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>shorts <span class="token operator">&#x26;&#x26;</span> sunny<span class="token punctuation">)</span> <span class="token comment">// false</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="或运算符"><a aria-hidden="true" tabindex="-1" href="#或运算符"><span class="icon icon-link"></span></a>或运算符:||</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> late <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> skipBreakfast <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> underslept <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line"><span class="token keyword">var</span> checkEmails <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// true OR true</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>skipBreakfast <span class="token operator">||</span> late<span class="token punctuation">)</span> <span class="token comment">// true</span>
</span><span class="code-line"><span class="token comment">// true OR false</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>late <span class="token operator">||</span> checkEmails<span class="token punctuation">)</span> <span class="token comment">// true</span>
</span><span class="code-line"><span class="token comment">// false OR true</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>underslept <span class="token operator">||</span> late<span class="token punctuation">)</span> <span class="token comment">// true</span>
</span><span class="code-line"><span class="token comment">// false OR false</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>checkEmails <span class="token operator">||</span> underslept<span class="token punctuation">)</span> <span class="token comment">// false</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="not-运算符"><a aria-hidden="true" tabindex="-1" href="#not-运算符"><span class="icon icon-link"></span></a>NOT 运算符</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> hungry <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> full <span class="token operator">=</span> <span class="token boolean">false</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span><span class="token operator">!</span>hungry<span class="token punctuation">)</span> <span class="token comment">// false</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span><span class="token operator">!</span>full<span class="token punctuation">)</span> <span class="token comment">// true</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="评估顺序"><a aria-hidden="true" tabindex="-1" href="#评估顺序"><span class="icon icon-link"></span></a>评估顺序</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token operator">!</span><span class="token boolean">true</span> <span class="token operator">&#x26;&#x26;</span> <span class="token punctuation">(</span><span class="token boolean">false</span> <span class="token operator">||</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token comment">// false</span>
</span><span class="code-line"><span class="token comment">/*
</span></span><span class="code-line"><span class="token comment">(false || true) 被评估首先返回 true。
</span></span><span class="code-line"><span class="token comment">然后,评估 !true &#x26;&#x26; true 并返回最终结果 false
</span></span><span class="code-line"><span class="token comment">*/</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token operator">!</span><span class="token boolean">false</span> <span class="token operator">&#x26;&#x26;</span> <span class="token boolean">true</span> <span class="token operator">||</span> <span class="token boolean">false</span> <span class="token comment">// true</span>
</span><span class="code-line"><span class="token comment">/*
</span></span><span class="code-line"><span class="token comment">!false 被评估首先返回 true。
</span></span><span class="code-line"><span class="token comment">然后评估 true &#x26;&#x26; true返回 true。
</span></span><span class="code-line"><span class="token comment">那么,真|| 评估 false 最终返回 true
</span></span><span class="code-line"><span class="token comment">*/</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="等式运算符"><a aria-hidden="true" tabindex="-1" href="#等式运算符"><span class="icon icon-link"></span></a>等式运算符</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> myAge <span class="token operator">=</span> <span class="token number">22</span>
</span><span class="code-line"><span class="token keyword">var</span> sisterAge <span class="token operator">=</span> <span class="token number">21</span>
</span><span class="code-line">
</span><span class="code-line">myAge <span class="token operator">==</span> sisterAge <span class="token comment">// false</span>
</span><span class="code-line">myAge <span class="token operator">!==</span> sisterAge <span class="token comment">// true</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="嵌套条件"><a aria-hidden="true" tabindex="-1" href="#嵌套条件"><span class="icon icon-link"></span></a>嵌套条件</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> studied <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line"><span class="token keyword">var</span> wellRested <span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>wellRested<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"祝你今天好运!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>studied<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"你应该为考试做好准备!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"考试前花几个小时学习!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 打印: 祝你今天好运!</span>
</span><span class="code-line"><span class="token comment">// 打印: 你应该为考试做好准备!</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="当表达式"><a aria-hidden="true" tabindex="-1" href="#当表达式"><span class="icon icon-link"></span></a>当表达式</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> grade <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"A"</span></span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">when</span><span class="token punctuation">(</span>grade<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token string-literal singleline"><span class="token string">"A"</span></span> <span class="token operator">-></span> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"很棒的工作!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token string-literal singleline"><span class="token string">"B"</span></span> <span class="token operator">-></span> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"做得太好了!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token string-literal singleline"><span class="token string">"C"</span></span> <span class="token operator">-></span> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"你通过了!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">else</span> <span class="token operator">-></span> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"关!下次一定要多准备!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token comment">// 打印: 很棒的工作!</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="范围运算符"><a aria-hidden="true" tabindex="-1" href="#范围运算符"><span class="icon icon-link"></span></a>范围运算符</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> height <span class="token operator">=</span> <span class="token number">46</span> <span class="token comment">// inches</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>height <span class="token keyword">in</span> <span class="token number">1</span><span class="token operator">..</span><span class="token number">53</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"抱歉,您必须至少 54 英寸才能乘坐过山车"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token comment">// Prints: 抱歉,您必须至少 54 英寸才能乘坐过山车</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="collections"><a aria-hidden="true" tabindex="-1" href="#collections"><span class="icon icon-link"></span></a>Collections</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="不可变列表"><a aria-hidden="true" tabindex="-1" href="#不可变列表"><span class="icon icon-link"></span></a>不可变列表</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> programmingLanguages <span class="token operator">=</span> <span class="token function">listOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"C#"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Java"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Kotlin"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Ruby"</span></span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="可变列表"><a aria-hidden="true" tabindex="-1" href="#可变列表"><span class="icon icon-link"></span></a>可变列表</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> fruits <span class="token operator">=</span> <span class="token function">mutableListOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Orange"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Apple"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Banana"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Mango"</span></span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="访问列表元素"><a aria-hidden="true" tabindex="-1" href="#访问列表元素"><span class="icon icon-link"></span></a>访问列表元素</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> cars <span class="token operator">=</span> <span class="token function">listOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"BMW"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Ferrari"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Volvo"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Tesla"</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>cars<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment">// Prints: Volvo</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="大小属性"><a aria-hidden="true" tabindex="-1" href="#大小属性"><span class="icon icon-link"></span></a>大小属性</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> worldContinents <span class="token operator">=</span> <span class="token function">listOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Asia"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Africa"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"North America"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"South America"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Antarctica"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Europe"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Australia"</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>worldContinents<span class="token punctuation">.</span>size<span class="token punctuation">)</span> <span class="token comment">// Prints: 7</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="列表操作"><a aria-hidden="true" tabindex="-1" href="#列表操作"><span class="icon icon-link"></span></a>列表操作</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> seas <span class="token operator">=</span> <span class="token function">listOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Black Sea"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Caribbean Sea"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"North Sea"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>seas<span class="token punctuation">.</span><span class="token function">contains</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"North Sea"</span></span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">// Prints: true</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// contains() 函数对任何列表执行读取操作并确定元素是否存在</span>
</span><span class="code-line">seas<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Baltic Sea"</span></span><span class="token punctuation">)</span> <span class="token comment">// 错误:无法对不可变列表执行写操作</span>
</span><span class="code-line"><span class="token comment">// add() 函数只能在可变列表上调用,因此上面的代码会引发错误</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="不可变集"><a aria-hidden="true" tabindex="-1" href="#不可变集"><span class="icon icon-link"></span></a>不可变集</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> primaryColors <span class="token operator">=</span> <span class="token function">setOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Red"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Blue"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Yellow"</span></span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="可变集"><a aria-hidden="true" tabindex="-1" href="#可变集"><span class="icon icon-link"></span></a>可变集</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> womenInTech <span class="token operator">=</span> <span class="token function">mutableSetOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Ada Lovelace"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Grace Hopper"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Radia Perlman"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Sister Mary Kenneth Keller"</span></span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="访问集合元素"><a aria-hidden="true" tabindex="-1" href="#访问集合元素"><span class="icon icon-link"></span></a>访问集合元素</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> companies <span class="token operator">=</span> <span class="token function">setOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Facebook"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Apple"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Netflix"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Google"</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>companies<span class="token punctuation">.</span><span class="token function">elementAt</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: Google</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>companies<span class="token punctuation">.</span><span class="token function">elementAt</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Returns and Error</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>companies<span class="token punctuation">.</span><span class="token function">elementAtOrNull</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: null</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="不可变映射"><a aria-hidden="true" tabindex="-1" href="#不可变映射"><span class="icon icon-link"></span></a>不可变映射</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> averageTemp <span class="token operator">=</span> <span class="token function">mapOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"winter"</span></span> <span class="token keyword">to</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"spring"</span></span> <span class="token keyword">to</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"summer"</span></span> <span class="token keyword">to</span> <span class="token number">85</span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"fall"</span></span> <span class="token keyword">to</span> <span class="token number">55</span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="可变映射"><a aria-hidden="true" tabindex="-1" href="#可变映射"><span class="icon icon-link"></span></a>可变映射</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> europeanDomains <span class="token operator">=</span> <span class="token function">mutableMapOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Germany"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"de"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Slovakia"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"sk"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Hungary"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"hu"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Norway"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"no"</span></span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="检索映射键和值"><a aria-hidden="true" tabindex="-1" href="#检索映射键和值"><span class="icon icon-link"></span></a>检索映射键和值</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> oscarWinners <span class="token operator">=</span> <span class="token function">mutableMapOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Parasite"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Bong Joon-ho"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Green Book"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Jim Burke"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"The Shape Of Water"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Guillermo del Toro"</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>oscarWinners<span class="token punctuation">.</span>keys<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: [Parasite, Green Book, The Shape Of Water]</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>oscarWinners<span class="token punctuation">.</span>values<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: [Bong Joon-ho, Jim Burke, Guillermo del Toro]</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>oscarWinners<span class="token punctuation">[</span><span class="token string-literal singleline"><span class="token string">"Parasite"</span></span><span class="token punctuation">]</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: Bong Joon-ho</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="添加和删除地图条目"><a aria-hidden="true" tabindex="-1" href="#添加和删除地图条目"><span class="icon icon-link"></span></a>添加和删除地图条目</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">var</span> worldCapitals <span class="token operator">=</span> <span class="token function">mutableMapOf</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"United States"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Washington D.C."</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Germany"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Berlin"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Mexico"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Mexico City"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"France"</span></span> <span class="token keyword">to</span> <span class="token string-literal singleline"><span class="token string">"Paris"</span></span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line">worldCapitals<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Brazil"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Brasilia"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>worldCapitals<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: {United States=Washington D.C., Germany=Berlin, Mexico=Mexico City, France=Paris, Brazil=Brasilia}</span>
</span><span class="code-line">
</span><span class="code-line">worldCapitals<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Germany"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">println</span><span class="token punctuation">(</span>worldCapitals<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">// Prints: {United States=Washington D.C., Mexico=Mexico City, France=Paris, Brazil=Brasilia}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="函数"><a aria-hidden="true" tabindex="-1" href="#函数"><span class="icon icon-link"></span></a>函数</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="函数-1"><a aria-hidden="true" tabindex="-1" href="#函数-1"><span class="icon icon-link"></span></a>函数</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">greet</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Hey there!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Function call</span>
</span><span class="code-line"> <span class="token function">greet</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// Prints: Hey there!</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="函数参数"><a aria-hidden="true" tabindex="-1" href="#函数参数"><span class="icon icon-link"></span></a>函数参数</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">birthday</span><span class="token punctuation">(</span>name<span class="token operator">:</span> String<span class="token punctuation">,</span> age<span class="token operator">:</span> Int<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Happy birthday </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">name</span></span><span class="token string">! You turn </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">age</span></span><span class="token string"> today!"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">birthday</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Oscar"</span></span><span class="token punctuation">,</span> <span class="token number">26</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Happy birthday Oscar! You turn 25 today!</span>
</span><span class="code-line"> <span class="token function">birthday</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Amarah"</span></span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Happy birthday Amarah! You turn 30 today!</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="默认参数"><a aria-hidden="true" tabindex="-1" href="#默认参数"><span class="icon icon-link"></span></a>默认参数</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">favoriteLanguage</span><span class="token punctuation">(</span>name<span class="token operator">:</span> String<span class="token punctuation">,</span> language<span class="token operator">:</span> String <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Kotlin"</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Hello, </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">name</span></span><span class="token string">. Your favorite programming language is </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">language</span></span><span class="token string">"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">favoriteLanguage</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Manon"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Hello, Manon. Your favorite programming language is Kotlin</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token function">favoriteLanguage</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Lee"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Java"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Hello, Lee. Your favorite programming language is Java</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="命名参数"><a aria-hidden="true" tabindex="-1" href="#命名参数"><span class="icon icon-link"></span></a>命名参数</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">findMyAge</span><span class="token punctuation">(</span>currentYear<span class="token operator">:</span> Int<span class="token punctuation">,</span> birthYear<span class="token operator">:</span> Int<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> myAge <span class="token operator">=</span> currentYear <span class="token operator">-</span> birthYear
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"I am </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">myAge</span></span><span class="token string"> years old."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">findMyAge</span><span class="token punctuation">(</span>currentYear <span class="token operator">=</span> <span class="token number">2020</span><span class="token punctuation">,</span> birthYear <span class="token operator">=</span> <span class="token number">1995</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: I am 25 years old.</span>
</span><span class="code-line"> <span class="token function">findMyAge</span><span class="token punctuation">(</span>birthYear <span class="token operator">=</span> <span class="token number">1920</span><span class="token punctuation">,</span> currentYear <span class="token operator">=</span> <span class="token number">2020</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: I am 100 years old.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="返回声明"><a aria-hidden="true" tabindex="-1" href="#返回声明"><span class="icon icon-link"></span></a>返回声明</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// Return type is declared outside the parentheses</span>
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">getArea</span><span class="token punctuation">(</span>length<span class="token operator">:</span> Int<span class="token punctuation">,</span> width<span class="token operator">:</span> Int<span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> area <span class="token operator">=</span> length <span class="token operator">*</span> width
</span><span class="code-line">
</span><span class="code-line"> <span class="token comment">// return statement</span>
</span><span class="code-line"> <span class="token keyword">return</span> area
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> myArea <span class="token operator">=</span> <span class="token function">getArea</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"The area is </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">myArea</span></span><span class="token string">."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: The area is 80.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="单表达式函数"><a aria-hidden="true" tabindex="-1" href="#单表达式函数"><span class="icon icon-link"></span></a>单表达式函数</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">fullName</span><span class="token punctuation">(</span>firstName<span class="token operator">:</span> String<span class="token punctuation">,</span> lastName<span class="token operator">:</span> String<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">firstName</span></span><span class="token string"> </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">lastName</span></span><span class="token string">"</span></span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token function">fullName</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Ariana"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Ortega"</span></span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Ariana Ortega</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token function">fullName</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Kai"</span></span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Gittens"</span></span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Kai Gittens</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="函数字面量"><a aria-hidden="true" tabindex="-1" href="#函数字面量"><span class="icon icon-link"></span></a>函数字面量</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Anonymous Function:</span>
</span><span class="code-line"> <span class="token keyword">var</span> getProduct <span class="token operator">=</span> <span class="token keyword">fun</span><span class="token punctuation">(</span>num1<span class="token operator">:</span> Int<span class="token punctuation">,</span> num2<span class="token operator">:</span> Int<span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> num1 <span class="token operator">*</span> num2
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token function">getProduct</span><span class="token punctuation">(</span><span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: 24</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token comment">// Lambda Expression</span>
</span><span class="code-line"> <span class="token keyword">var</span> getDifference <span class="token operator">=</span> <span class="token punctuation">{</span> num1<span class="token operator">:</span> Int<span class="token punctuation">,</span> num2<span class="token operator">:</span> Int <span class="token operator">-></span> num1 <span class="token operator">-</span> num2 <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token function">getDifference</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: 7</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="简单的高阶函数"><a aria-hidden="true" tabindex="-1" href="#简单的高阶函数"><span class="icon icon-link"></span></a>简单的高阶函数</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// 注意啦,这里的 num1AndNum2 有个 operation它是接收了一个函数作为形参</span>
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">num1AndNum2</span><span class="token punctuation">(</span>num1<span class="token operator">:</span> Int<span class="token punctuation">,</span> num2<span class="token operator">:</span> Int<span class="token punctuation">,</span> operation<span class="token operator">:</span> <span class="token punctuation">(</span>Int<span class="token punctuation">,</span> Int<span class="token punctuation">)</span> <span class="token operator">-></span> Int<span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 让我们试着向 operation 传入参数</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token function">operation</span><span class="token punctuation">(</span>num1<span class="token punctuation">,</span> num2<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">plus</span><span class="token punctuation">(</span>num1<span class="token operator">:</span> Int<span class="token punctuation">,</span> num2<span class="token operator">:</span> Int<span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> num1 <span class="token operator">+</span> num2
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span>args<span class="token operator">:</span> Array<span class="token operator">&#x3C;</span>String<span class="token operator">></span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> total <span class="token operator">=</span> <span class="token function">num1AndNum2</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token operator">::</span>plus<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>total<span class="token punctuation">)</span><span class="token comment">//300</span>
</span><span class="code-line"> <span class="token comment">// 怎么样?我们利用传入一个函数来充当另一个函数的参数</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p class="wrap-text">还记得我们怎么在 Java 中用接口吗?试着用函数参数简化它</p>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="以匿名函数作为参数的函数"><a aria-hidden="true" tabindex="-1" href="#以匿名函数作为参数的函数"><span class="icon icon-link"></span></a>以匿名函数作为参数的函数</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">//operation是一个函数类型的参数哦</span>
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">num1AndNum2</span><span class="token punctuation">(</span>num1<span class="token operator">:</span> Int<span class="token punctuation">,</span> num2<span class="token operator">:</span> Int<span class="token punctuation">,</span> operation<span class="token operator">:</span> <span class="token punctuation">(</span>Int<span class="token punctuation">,</span> Int<span class="token punctuation">)</span> <span class="token operator">-></span> Int<span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token function">operation</span><span class="token punctuation">(</span>num1<span class="token punctuation">,</span> num2<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span>args<span class="token operator">:</span> Array<span class="token operator">&#x3C;</span>String<span class="token operator">></span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">//这里我们定义一个匿名函数</span>
</span><span class="code-line"> <span class="token keyword">val</span> operation<span class="token operator">:</span> <span class="token punctuation">(</span>Int<span class="token punctuation">,</span> Int<span class="token punctuation">)</span> <span class="token operator">-></span> Int <span class="token operator">=</span> <span class="token punctuation">{</span> i<span class="token operator">:</span> Int<span class="token punctuation">,</span> i2<span class="token operator">:</span> Int <span class="token operator">-></span>
</span><span class="code-line"> i <span class="token operator">+</span> i2
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token keyword">val</span> total <span class="token operator">=</span> <span class="token function">num1AndNum2</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> operation<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>total<span class="token punctuation">)</span> <span class="token comment">//300</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="lambda表达式方式传入函数参数"><a aria-hidden="true" tabindex="-1" href="#lambda表达式方式传入函数参数"><span class="icon icon-link"></span></a>Lambda表达式方式传入函数参数</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">//我们还是不改变什么</span>
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">num1AndNum2</span><span class="token punctuation">(</span>num1<span class="token operator">:</span> Int<span class="token punctuation">,</span> num2<span class="token operator">:</span> Int<span class="token punctuation">,</span> operation<span class="token operator">:</span> <span class="token punctuation">(</span>Int<span class="token punctuation">,</span> Int<span class="token punctuation">)</span> <span class="token operator">-></span> Int<span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token function">operation</span><span class="token punctuation">(</span>num1<span class="token punctuation">,</span> num2<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span>args<span class="token operator">:</span> Array<span class="token operator">&#x3C;</span>String<span class="token operator">></span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">//wow哦天哪Lambda可以做到这样简洁</span>
</span><span class="code-line"> <span class="token keyword">val</span> total <span class="token operator">=</span> <span class="token function">num1AndNum2</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> n1<span class="token punctuation">,</span> n2 <span class="token operator">-></span>
</span><span class="code-line"> n1 <span class="token operator">+</span> n2
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>total<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p class="wrap-text">这里之所以可以把lambda写在外部是因为operation是最后一个参数。</p>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="扩展函数"><a aria-hidden="true" tabindex="-1" href="#扩展函数"><span class="icon icon-link"></span></a>扩展函数</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// Kotlin File</span>
</span><span class="code-line"><span class="token keyword">fun</span> String<span class="token punctuation">.</span><span class="token function">lettersCount</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> Int <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> count <span class="token operator">=</span> <span class="token number">0</span>
</span><span class="code-line"> <span class="token comment">// this 相当于我们下面写的字符串具体的内容</span>
</span><span class="code-line"> <span class="token comment">// for 可以用 forEach 代替</span>
</span><span class="code-line"> <span class="token keyword">for</span> <span class="token punctuation">(</span>char <span class="token keyword">in</span> <span class="token keyword">this</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 判断是不是字母(包括中文)</span>
</span><span class="code-line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>char<span class="token punctuation">.</span><span class="token function">isLetter</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> count<span class="token operator">++</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token keyword">return</span> count
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">//不修改 String 类的情况下新增方法</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"123demo"</span></span><span class="token punctuation">.</span><span class="token function">lettersCount</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Print: 4</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="运算符重载"><a aria-hidden="true" tabindex="-1" href="#运算符重载"><span class="icon icon-link"></span></a>运算符重载</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token function">Money</span><span class="token punctuation">(</span><span class="token keyword">var</span> amount<span class="token operator">:</span> Double<span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 配合扩展函数,重载运算符 + 即 plus</span>
</span><span class="code-line"><span class="token keyword">operator</span> <span class="token keyword">fun</span> Money<span class="token punctuation">.</span><span class="token function">plus</span><span class="token punctuation">(</span>money<span class="token operator">:</span> Money<span class="token punctuation">)</span><span class="token operator">:</span> Money <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 把金额相加返回一个新的 Money对象</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token function">Money</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>amount <span class="token operator">+</span> money<span class="token punctuation">.</span>amount<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> appleMoney <span class="token operator">=</span> <span class="token function">Money</span><span class="token punctuation">(</span><span class="token number">10.0</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">val</span> eggMoney <span class="token operator">=</span> <span class="token function">Money</span><span class="token punctuation">(</span><span class="token number">6.0</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// 你没有看错,我们将两个类对象相加了</span>
</span><span class="code-line"> <span class="token keyword">val</span> allMoney <span class="token operator">=</span> appleMoney <span class="token operator">+</span> eggMoney
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>allMoney<span class="token punctuation">.</span>amount<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Print: 16.0</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span></code></pre>
<p class="wrap-text">这里的 <strong>运算符重载</strong> 依赖于 <strong>扩展函数</strong></p>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="中缀表达式"><a aria-hidden="true" tabindex="-1" href="#中缀表达式"><span class="icon icon-link"></span></a>中缀表达式</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// infix 定义一个中缀表达式,类似扩展函数那样</span>
</span><span class="code-line"><span class="token keyword">infix</span> <span class="token keyword">fun</span> LocalDate<span class="token punctuation">.</span><span class="token function">formatBy</span><span class="token punctuation">(</span>pattern<span class="token operator">:</span>String<span class="token punctuation">)</span><span class="token operator">:</span>String<span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> formatter <span class="token operator">=</span> DateTimeFormatter<span class="token punctuation">.</span><span class="token function">ofPattern</span><span class="token punctuation">(</span>pattern<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>formatter<span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> currentDate <span class="token operator">=</span> LocalDate<span class="token punctuation">.</span><span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>currentDate formatBy <span class="token string-literal singleline"><span class="token string">"yyyy-MM-dd"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Print: 2024-02-08</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token punctuation">(</span><span class="token number">1</span> until <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">forEach</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>it<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Print 1 至 99</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="类"><a aria-hidden="true" tabindex="-1" href="#类"><span class="icon icon-link"></span></a></h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="类实例"><a aria-hidden="true" tabindex="-1" href="#类实例"><span class="icon icon-link"></span></a>类实例</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// Class</span>
</span><span class="code-line"><span class="token keyword">class</span> Student <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> name <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Lucia"</span></span>
</span><span class="code-line"> <span class="token keyword">var</span> semester <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Fall"</span></span>
</span><span class="code-line"> <span class="token keyword">var</span> gpa <span class="token operator">=</span> <span class="token number">3.95</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> student <span class="token operator">=</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Instance</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>name<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Lucia</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>semester<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Fall</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>gpa<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: 3.95 </span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="主构造函数"><a aria-hidden="true" tabindex="-1" href="#主构造函数"><span class="icon icon-link"></span></a>主构造函数</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token function">Student</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token keyword">val</span> name<span class="token operator">:</span> String<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> gpa<span class="token operator">:</span> Double<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> semester<span class="token operator">:</span> String<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> estimatedGraduationYear<span class="token operator">:</span> Int
</span><span class="code-line"><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> student <span class="token operator">=</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Lucia"</span></span><span class="token punctuation">,</span> <span class="token number">3.95</span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Fall"</span></span><span class="token punctuation">,</span> <span class="token number">2022</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>name<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Lucia</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>gpa<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: 3.95</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>semester<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Fall</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>estimatedGraduationYear<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: 2022</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="次构造函数"><a aria-hidden="true" tabindex="-1" href="#次构造函数"><span class="icon icon-link"></span></a>次构造函数</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token function">Student</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token keyword">val</span> name<span class="token operator">:</span> String<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> gpa<span class="token operator">:</span> Double<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> semester<span class="token operator">:</span> String<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> estimatedGraduationYear<span class="token operator">:</span> Int
</span><span class="code-line"><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">constructor</span><span class="token punctuation">(</span>name<span class="token operator">:</span> String<span class="token punctuation">,</span> gpa<span class="token operator">:</span> Double<span class="token punctuation">)</span> <span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> gpa<span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Fall"</span></span><span class="token punctuation">,</span> <span class="token number">2024</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> student <span class="token operator">=</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Lucia"</span></span><span class="token punctuation">,</span> <span class="token number">3.95</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>name<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Lucia</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>semester<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Fall</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>estimatedGraduationYear<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: 2024</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="类示例"><a aria-hidden="true" tabindex="-1" href="#类示例"><span class="icon icon-link"></span></a>类示例</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// 具有包含默认值的属性的类</span>
</span><span class="code-line"><span class="token keyword">class</span> Student <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> name <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Lucia"</span></span>
</span><span class="code-line"> <span class="token keyword">var</span> semester <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Fall"</span></span>
</span><span class="code-line"> <span class="token keyword">var</span> gpa <span class="token operator">=</span> <span class="token number">3.95</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 没有类体的简写语法</span>
</span><span class="code-line"><span class="token keyword">class</span> Student
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3 id="成员函数"><a aria-hidden="true" tabindex="-1" href="#成员函数"><span class="icon icon-link"></span></a>成员函数</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-2-->
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token keyword">val</span> name<span class="token operator">:</span> String<span class="token punctuation">,</span> <span class="token keyword">val</span> gpa<span class="token operator">:</span> Double<span class="token punctuation">,</span> <span class="token keyword">val</span> semester<span class="token operator">:</span> String<span class="token punctuation">,</span> <span class="token keyword">val</span> estimatedGraduationYear<span class="token operator">:</span> Int<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">init</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">name</span></span><span class="token string"> has </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token expression">estimatedGraduationYear <span class="token operator">-</span> <span class="token number">2020</span></span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> years left in college."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token comment">// 成员函数</span>
</span><span class="code-line"> <span class="token keyword">fun</span> <span class="token function">calculateLetterGrade</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> String <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token keyword">when</span> <span class="token punctuation">{</span>
</span><span class="code-line"> gpa <span class="token operator">>=</span> <span class="token number">3.0</span> <span class="token operator">-></span> <span class="token string-literal singleline"><span class="token string">"A"</span></span>
</span><span class="code-line"> gpa <span class="token operator">>=</span> <span class="token number">2.7</span> <span class="token operator">-></span> <span class="token string-literal singleline"><span class="token string">"B"</span></span>
</span><span class="code-line"> gpa <span class="token operator">>=</span> <span class="token number">1.7</span> <span class="token operator">-></span> <span class="token string-literal singleline"><span class="token string">"C"</span></span>
</span><span class="code-line"> gpa <span class="token operator">>=</span> <span class="token number">1.0</span> <span class="token operator">-></span> <span class="token string-literal singleline"><span class="token string">"D"</span></span>
</span><span class="code-line"> <span class="token keyword">else</span> <span class="token operator">-></span> <span class="token string-literal singleline"><span class="token string">"E"</span></span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 创建实例并调用函数时,将执行 when 表达式并返回字母等级</span>
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> student <span class="token operator">=</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Lucia"</span></span><span class="token punctuation">,</span> <span class="token number">3.95</span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Fall"</span></span><span class="token punctuation">,</span> <span class="token number">2022</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Lucia has 2 years left in college. </span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token expression">student<span class="token punctuation">.</span>name</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">'s letter grade is </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token expression">student<span class="token punctuation">.</span><span class="token function">calculateLetterGrade</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Lucia's letter grade is A. </span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="初始化块"><a aria-hidden="true" tabindex="-1" href="#初始化块"><span class="icon icon-link"></span></a>初始化块</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token keyword">val</span> name<span class="token operator">:</span> String<span class="token punctuation">,</span> <span class="token keyword">val</span> gpa<span class="token operator">:</span> Double<span class="token punctuation">,</span> <span class="token keyword">val</span> semester<span class="token operator">:</span> String<span class="token punctuation">,</span> <span class="token keyword">val</span> estimatedGraduationYear<span class="token operator">:</span> Int<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">init</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">$</span><span class="token expression">name</span></span><span class="token string"> has </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token expression">estimatedGraduationYear <span class="token operator">-</span> <span class="token number">2020</span></span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> years left in college."</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">var</span> student <span class="token operator">=</span> <span class="token function">Student</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"Lucia"</span></span><span class="token punctuation">,</span> <span class="token number">3.95</span><span class="token punctuation">,</span> <span class="token string-literal singleline"><span class="token string">"Fall"</span></span><span class="token punctuation">,</span> <span class="token number">2022</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Prints: Lucia has 2 years left in college. </span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="data数据类"><a aria-hidden="true" tabindex="-1" href="#data数据类"><span class="icon icon-link"></span></a>Data数据类</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// 默认实现 getter/setter 和 toString 这些方法</span>
</span><span class="code-line"><span class="token keyword">data</span> <span class="token keyword">class</span> <span class="token function">UserInfo</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token keyword">val</span> name<span class="token operator">:</span> String<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">val</span> age<span class="token operator">:</span> Int
</span><span class="code-line"><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">val</span> userInfo <span class="token operator">=</span> <span class="token function">UserInfo</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"张三"</span></span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>userInfo<span class="token punctuation">.</span>name<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// 张三</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>userInfo<span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// UserInfo(name=张三, age=20)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="伴生对象"><a aria-hidden="true" tabindex="-1" href="#伴生对象"><span class="icon icon-link"></span></a>伴生对象</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token comment">// 私有化构造方法</span>
</span><span class="code-line"><span class="token keyword">class</span> User <span class="token keyword">private</span> <span class="token keyword">constructor</span><span class="token punctuation">(</span><span class="token keyword">val</span> name<span class="token operator">:</span> String<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 伴生对象,相当于一个静态类</span>
</span><span class="code-line"> <span class="token keyword">companion</span> <span class="token keyword">object</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">fun</span> <span class="token function">createUser</span><span class="token punctuation">(</span>name<span class="token operator">:</span> String<span class="token punctuation">)</span><span class="token operator">:</span> User <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token function">User</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 就像是调用静态方法</span>
</span><span class="code-line"> <span class="token keyword">val</span> user <span class="token operator">=</span> User<span class="token punctuation">.</span><span class="token function">createUser</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"张三"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>user<span class="token punctuation">.</span>name<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">//Print: 张三</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="内部类"><a aria-hidden="true" tabindex="-1" href="#内部类"><span class="icon icon-link"></span></a>内部类</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">class</span> Outer <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> outStr<span class="token operator">:</span> String <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"Outer"</span></span>
</span><span class="code-line"> <span class="token comment">// inner 可以让内部类访问外部类</span>
</span><span class="code-line"> <span class="token keyword">inner</span> <span class="token keyword">class</span> Inner <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">fun</span> <span class="token function">printOutStr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>outStr<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">val</span> outer <span class="token operator">=</span> <span class="token function">Outer</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> outer<span class="token punctuation">.</span><span class="token function">Inner</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">printOutStr</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Print: Outer</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p class="wrap-text">如果不用inner修饰会导致Inner类无法使用outStr</p>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="object单例类"><a aria-hidden="true" tabindex="-1" href="#object单例类"><span class="icon icon-link"></span></a>object单例类</h3><div class="wrap-body">
<pre class="language-kotlin"><code class="language-kotlin code-highlight"><span class="code-line"><span class="token keyword">object</span> HttpUtils <span class="token punctuation">{</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">const</span> <span class="token keyword">val</span> baseUrl <span class="token operator">=</span> <span class="token string-literal singleline"><span class="token string">"https://xxxx.com"</span></span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">fun</span> <span class="token function">getRequest</span><span class="token punctuation">(</span>url<span class="token operator">:</span> String<span class="token punctuation">)</span><span class="token operator">:</span> String <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 示例代码....</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token string-literal singleline"><span class="token string">"Result"</span></span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token function">println</span><span class="token punctuation">(</span>HttpUtils<span class="token punctuation">.</span>baseUrl<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token comment">// Print: "https://xxxx.com"</span>
</span><span class="code-line"> HttpUtils<span class="token punctuation">.</span><span class="token function">getRequest</span><span class="token punctuation">(</span><span class="token string-literal singleline"><span class="token string">"xxxxx"</span></span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p class="wrap-text">object类中定义的函数和属性都可以用类名直接引用</p>
<!--rehype:className=wrap-text-->
</div></div></div></div></div><div class="wrap h2body-not-exist"><div class="wrap-header h2wrap"><h2 id="另见"><a aria-hidden="true" tabindex="-1" href="#另见"><span class="icon icon-link"></span></a>另见</h2><div class="wrap-body">
<ul>
<li><a href="https://kotlinlang.org/">Kotlin 语言官方文档</a> <em>(kotlinlang.org)</em></li>
</ul>
</div></div><div class="h2wrap-body"></div></div></div><script src="https://giscus.app/client.js" data-repo="jaywcjlove/reference" data-repo-id="R_kgDOID2-Mw" data-category="Q&#x26;A" data-category-id="DIC_kwDOID2-M84CS5wo" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="dark" data-lang="zh-CN" crossorigin="anonymous" async></script><div class="giscus"></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 <a href="https://wangchujiang.com/#/app" target="_blank">Kenny Wang</a>.</footer></footer><script src="../data.js?v=1.6.0" defer></script><script src="../js/fuse.min.js?v=1.6.0" defer></script><script src="../js/main.js?v=1.6.0" defer></script><div id="mysearch"><div class="mysearch-box"><div class="mysearch-input"><div><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><input id="mysearch-input" type="search" placeholder="搜索" autocomplete="off"><div class="mysearch-clear"></div></div><button id="mysearch-close" type="button">搜索</button></div><div class="mysearch-result"><div id="mysearch-menu"></div><div id="mysearch-content"></div></div></div></div></body>
</html>