3:kotlin 邏輯控制(Control flow)

向其他語言一樣,kotlin也有循環和邏輯控制

條件判斷(Conditional expressions)

kotlin使用ifwhen來進行條件判斷

如果糾結選擇if還是when,建議使用when,因為它更能提高程序的健壯性

if

普通寫法

fun main() {val d: Intval check = trueif (check) {d = 1} else {d = 2}println(d) // 1
}

簡單寫法

kotlin中沒有? :形式的三元表達式

fun main() {val a = 1val b = 2val res = if (a > b) a else bprintln(res) // 2
}

when

當有多個條件分支時使用when

條件和執行的邏輯用->分割

fun main() {val obj = "Hello"when (obj) {"1" -> println("One")   // 如果 obj == "1",執行當前分支"Hello" -> println("Greeting")  // 如果 obj == "Hello",執行當前分支else -> println("Unknown")  // 如果上邊的所有分支都不符合,則執行當前分支}// Greeting
}

注意執行的順序是從上而下,如果有一個條件滿足了則不會進行下邊的判斷了

接收返回值的when

fun main() {val obj = "Hello"val result = when (obj) {"1" -> "One""Hello" -> "Greeting"else -> "Unknown"}println(result) // Greeting
}

一般情況下,else分支是必須的,除非編譯器檢測到上邊的條件覆蓋了所有可能的情況

除了上邊的匹配字符串,還可以使用條件表達式

fun main() {val temp = 18val description = when {temp < 0 -> "very cold"temp < 10 -> "a bit cold"temp < 20 -> "warm"else -> "hot"}println(description) // warm
}

范圍(Range)

學習循環之前先來看一下怎么創建一個Range

常見的創建Range的方式是使用..

  • 1..4 - 1,2,3,4
  • 1..<4 - 1,2,3
  • 4 downTo 1 - 4,3,2,1
  • 1..5 step 2 - 1,3,5
  • 'a'..'d' - 'a','b','c','d'
  • 'z' downTo 's' step 2 - 'z','x','v','t'

循環(Loops)

編程中最常見的兩種循環結構是forwhile。使用for迭代一系列值并執行操作。使用while繼續操作,直到滿足特定條件。

for

fun main() {for (number in 1..5) {print(number)}
// 12345
}
fun main() {val cakes = listOf("carrot", "cheese", "chocolate")for (cake in cakes) {println("Yummy, it's a $cake cake!")}
//    Yummy, it's a carrot cake!
//    Yummy, it's a cheese cake!
//    Yummy, it's a chocolate cake!
}

while

while有兩個運行方式,一種是簡單的while循環

fun main() {var cakesEaten = 0while (cakesEaten < 3) {println("Eat a cake $cakesEaten")cakesEaten++}
//    Eat a cake 0
//    Eat a cake 1
//    Eat a cake 2
}

另一種是do-while

fun main() {var cakesBaked = 0do {println("Bake a cake $cakesBaked")cakesBaked++} while (cakesBaked < 3)
//    Bake a cake 0
//    Bake a cake 1
//    Bake a cake 2
}

簡單while先判斷條件,如果滿足再去執行{}內中內,直到條件不滿足為止。do-while先執行一次{}中的內容,再去判斷條件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java集合拓展01

1、List&#xff0c;Set&#xff0c;Map三者的區別 List&#xff1a;一個有序&#xff08;元素存入集合的順序和取出的順序一致&#xff09;容器&#xff0c;元素可以重復&#xff0c;可以插入多個null元素&#xff0c;元素都有索引。常用的實現類有 ArrayList、LinkedList 和…

EMG肌肉信號處理合集 (一)

本文歸納了常見的肌肉信號預處理流程&#xff0c;方便EMG信號的后續分析。使用pyemgpipeline庫 來進行信號的處理。文中使用了 UC Irvine 數據庫的下肢數據。 目錄 1 使用wrappers 定義數據類&#xff0c;來進行后續的操作 2 肌電信號DC偏置去除 3 帶通濾波器處理 4 對肌電…

SpringCloud - 新版淘汰 Ribbon,在 OpenFeign 中整合 LoadBalancer 負載均衡

目錄 一、LoadBalancer 負載均衡 1.1、前言 1.2、LoadBalancer 負載均衡底層實現原理 二、整合 OpenFeign LoadBalancer 2.1、所需依賴 2.2、具體實現 2.3、自定義負載均衡策略 一、LoadBalancer 負載均衡 1.1、前言 在 2020 年以前的 SpringCloud 采用 Ribbon 作為負載…

OOM問題排查+Jvm優化

OOM問題排查&#xff1a; 1、top命令&#xff1a;查看cpu和內存的使用情況。 2、jstat命令&#xff1a;查看YGC和FGC情況&#xff0c;一般都是老年代不夠用。導致OOM 3、jmap命令&#xff1a; 查看哪個類的實例過多,以每個類占用多少了內存。4、jstack 查看線程與線程之間的阻…

Linux用戶名用戶組命令

添加用戶(為sam用戶添加一個主目錄/home/sam) useradd -d /home/sam -m sam新建一個用戶gem,該用戶的登錄shell是/bin/sh,它屬于group用戶組&#xff0c;同時又屬于adm和root用戶組&#xff0c;其中group用戶組是其主組 添加用戶賬號就是在/etc/passwd文件中為新用戶添加一條記…

80基于matlab的小波包熵與模糊C均值聚類的故障診斷,以凱斯西儲大學軸承數據為例進行分析

基于matlab的小波包熵與模糊C均值聚類的故障診斷&#xff0c;以凱斯西儲大學軸承數據為例進行分析。對數據進行小波包分解后重構&#xff0c;然后提取各頻帶能量分布&#xff0c;后計算小波包熵進行故障診斷。輸出特征可視化結果。數據可更換自己的&#xff0c;程序已調通&…

Git遠程庫操作(GitHub)

GitHub 網址&#xff1a;https://github.com/ 創建遠程倉庫 遠程倉庫操作 命令名稱作用git remote -v查看當前所有遠程地址別名git remote add 別名 遠程地址起別名git push 別名 分支推送本地分支上的內容到遠程倉庫git clone 遠程地址將遠程倉庫的內容克隆到本地git pull 別…

文件格式校驗

json格式校驗 非嚴格模式 json.loads(data, strictFalse) 如果strict為false&#xff08;默認值為True&#xff09;&#xff0c;則字符串中允許使用控制字符。此上下文中的控制字符是那些字符代碼在0–31范圍內的字符&#xff0c;包括“\t”&#xff08;制表符&#xff09;、“…

基于STM32的色彩識別與分類算法優化

基于STM32的色彩識別與分類算法優化是一項與圖像處理和機器學習相關的研究任務&#xff0c;旨在實現高效的色彩識別和分類算法在STM32微控制器上的運行。本文將介紹基于STM32的色彩識別與分類算法優化的原理和實現步驟&#xff0c;并提供相應的代碼示例。 1. 色彩識別與分類概…

[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code 本文提出一種新的3D數據表達形式3D Gaussians。每個Gaussian由以下參數組成&#xff1a;中心點位置、協方差矩陣、可見性、顏色。通過世界坐標系到相機坐標系&#xff0c;再到圖像坐標系的仿射關系&#xff0c;可將3D Gaussian映射到相機坐標系&#xff0c;通…

.NET面試題2

1.請解釋一下C#中的委托&#xff08;Delegate&#xff09;。 委托是一種類型安全的函數指針&#xff0c;它可以將方法作為參數傳遞或存儲在變量中。通過委托&#xff0c;可以實現方法的回調、事件處理等功能。委托在C#中使用delegate關鍵字進行聲明&#xff0c;可以根據方法簽名…

c語言:用迭代法解決遞歸問題

題目&#xff1a; 解釋&#xff1a;題目的意思就是用迭代法的空間和時間復雜的太高了&#xff0c;需要我們減小空間與時間的復雜度&#xff0c;我就想到了迭代法&#xff0c;思路和代碼如下&#xff1a; #include <stdio.h> //這里是遞歸法轉迭代法 int main() {int x,i…

Rust語言特性探秘:宏的魔力

大家好&#xff01;我是lincyang。 今天我們繼續深入探討Rust語言中的一個有趣而強大的特性——宏&#xff08;Macros&#xff09;。 宏在Rust中扮演著特殊的角色&#xff0c;不僅提高了代碼的靈活性&#xff0c;還增強了代碼的可重用性。接下來&#xff0c;我們會通過具體的…

[ 云計算 | AWS 實踐 ] 基于 Amazon S3 協議搭建個人云存儲服務

本文收錄于【#云計算入門與實踐 - AWS】專欄中&#xff0c;收錄 AWS 入門與實踐相關博文。 本文同步于個人公眾號&#xff1a;【云計算洞察】 更多關于云計算技術內容敬請關注&#xff1a;CSDN【#云計算入門與實踐 - AWS】專欄。 本系列已更新博文&#xff1a; [ 云計算 | …

Redis-Redis緩存高可用集群

1、Redis集群方案比較 哨兵模式 在redis3.0以前的版本要實現集群一般是借助哨兵sentinel工具來監控master節點的狀態&#xff0c;如果master節點異常&#xff0c;則會做主從切換&#xff0c;將某一臺slave作為master&#xff0c;哨兵的配置略微復雜&#xff0c;并且性能和高可…

深信服技術認證“SCSA-S”劃重點:信息收集

為幫助大家更加系統化地學習網絡安全知識&#xff0c;以及更高效地通過深信服安全服務認證工程師考核&#xff0c;深信服特別推出“SCSA-S認證備考秘笈”共十期內容&#xff0c;“考試重點”內容框架&#xff0c;幫助大家快速get重點知識~ 劃重點來啦 深信服安全服務認證工程師…

前端相關免查整合-vue、es、工具類等

知識 工具篇 網頁 取色器 F12 之后&#xff0c; style里面選一個顏色&#xff0c;然后點擊鉛筆&#xff0c;復制值 dayjs 用法 const date dayjs(2021-09-01); const formattedDate dayjs(2021-09-01).format(YYYY-MM-DD); console.log(formattedDate); // 輸出&#…

SEO從業人員提問常用的ChatGPT通用提示詞模板

如何提高網站在搜索引擎中的排名&#xff1f; 如何評估網站的SEO效果和優化潛力&#xff1f; 如何運用關鍵詞研究和競爭對手分析來制定SEO策略&#xff1f; 如何優化網站的內容、結構和元數據來提高SEO效果&#xff1f; 如何運用外部和內部鏈接來提高網站的權威性和排名&am…

OpenCvSharp從入門到實踐-(02)圖像處理的基本操作

目錄 圖像處理的基礎操作 1、讀取圖像 1.1、讀取當前目錄下的圖像 2、顯示圖像 2.1、Cv2.ImShow 用于顯示圖像。 2.2、Cv2.WaitKey方法用于等待用戶按下鍵盤上按鍵的時間。 2.3、Cv2.DestroyAllWindows方法用于銷毀所有正在顯示圖像的窗口。 2.4實例1-顯示圖像 2.4實例…

分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測

分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測 目錄 分類預測 | Matlab實現KPCA-IDBO-LSSVM基于核主成分分析-改進蜣螂算法優化最小二乘支持向量機的分類預測分類效果基本描述程序設計參考資料 分類效果 基本描述 1.多特…