教 程 目 录
Kotlin Tutorial
Kotlin是JetBrains推出的一种编程语言,JetBrains是最智能的Java IDE的官方设计师,名为Intellij IDEA .这是一种在JVM上运行的强静态类型语言. 2017年,谷歌宣布Kotlin是Android开发的官方语言. Kotlin是一种开源编程语言,它将面向对象的编程和功能特性结合到一个独特的平台中.内容分为不同章节,其中包含相关主题以及简单实用的示例.
受众
本教程已经为初学者准备了帮助他们了解Kotlin编程语言的基础知识.完成本教程后,您将发现自己在Kotlin中具有中等水平的专业知识,从那里您可以将自己带到下一个级别.
先决条件
在继续学习本教程之前,您应该对Java编程语言有基本的了解.虽然它是初学者的教程,但我们假设读者可以合理地接触任何编程环境以及变量,命令,语法等基本概念的知识.我们强烈建议您先获得Java编程语言的一些基本知识.继续Kotlin编程.
本文地址:https://itbaoku.cn/tutorial/kotlin-index.html
相关问答
我写下了下面的条件 if (subsriber?.isUnsubscribed && isDataEmpty()) { loadData() } 因为我的订阅者可能是无效的.显示上述标题错误.所以我以下面的方式投射 if (subsriber?.isUnsubscribed as Boolean && isDataEmpty()) { loadData() } 看起来不太好.有更好的方法吗? 解决方案 我通常用?:操作员解决这种情况: if (subsriber?.isUnsubscribed ?: false && isDataEmpty()) { loadData() } 这样,如果subscriber是null,subsriber?.isUnsubscribed也是null和subsriber?.isUnsubscribed ?: false评估false,这是希望的预期结果,否则切换到?: true. 还用as Boolean施放一种无效的类型是 unsafe 如果遇到null. 其他解决方案 您还需要:Kotlin.Boolean.发现:Kotlin.Boolean ?您可以这样做: when(something?.isEmpty()) {
)
在Kotlin文档中,他们提到了某种模块 对于internal修改器. 但是,我找不到术语模块本身的任何定义.那么模块的含义? 解决方案 一个模块是一组编译的Kotlin源: Intellij Idea Module; 一个Maven项目; gradle源集; 一组用蚂蚁任务的调用编译的文件. 这是在相同的文档文章关于可见性修改器的文章. :) 其他解决方案 来自Kotlin的文档,模块是一个模块是一个模块集合的Kotlin文件集: Intellij Idus Module 一个Maven项目; gradle源集 一组用一组调用 ant任务的文件. 是@hotkey的,但我想补充这个答案. 根据Andrey Breslav的说法 kotlin模块映射到Intellij的模块(IML-File)一对一. 根据Intellij的文档: 模块允许您将几个技术和框架组合在一个应用程序中.在Intellij Idea中,您可以为项目创建几个模块,并且每个模块都可以负责其自己的框架. 涉及Maven项目或命令行编译时, andrey state : 默认情况下,每个编译器运行是一个单独的模块:所有二进制依赖项将被视为目前不在模块中. 另外,gradle源集是一个模块,但test
)
应用和适用之间有什么区别.据我所知,以下代码执行相同的事情: swingElement.apply { minWidth = ENABLED_COLUMN_WIDTH maxWidth = ENABLED_COLUMN_WIDTH preferredWidth = ENABLED_COLUMN_WIDTH } with(swingElement) { minWidth = ENABLED_COLUMN_WIDTH maxWidth = ENABLED_COLUMN_WIDTH preferredWidth = ENABLED_COLUMN_WIDTH } 有什么区别,我应该使用另一个吗? 另外,是否有某些情况下可以工作,而另一种则无法工作? 解决方案 有两个区别: apply接受实例作为接收者,而with则需要作为参数传递一个实例.在这两种情况下,实例将在一个块内变为this. apply返回接收器,with返回其块中最后一个表达式的结果. 我不确定是否可以选择哪种功能有一些严格的规则.通常,当您需要用对象做某事并将其返回时,您会使用apply.当您需要对对象执行某些操作并返回其他对象时,您可以使用with或run.我更喜欢run,因为我认为它更可读,但这是一个品味的问题. 其他解决方案 这是相
)
在Kotlin中编辑不变的List的最佳方法是什么? 我知道List实际上不是不可变的,但是如果我将List传递到一个函数中,并且我需要整个列表减去一个单个元素,是否有一种支持的方法来处理该元素?如果我想要带有附加元素的整个列表,该怎么办? 解决方案 如果自己创建列表,而不是调用listOf("foo", "bar")呼叫mutableListOf("foo", "bar")以获取MutableList的实例. 如果您获得了列表,例如作为方法的参数,请在其上调用toMutableList()以获取可变复制. 或者使用map()或filter()等许多内置扩展方法之一,以获取带有修饰元素的 new 列表.例如,获取没有前N元素的列表使用drop(n).仅获取第一个n元素调用take(n). 如果您需要加入两个列表,请使用这样的加上操作员:val newList = list1 + list2. 请注意,修改方法是您方法参数的列表可能是代码气味.这就是为什么所有内置方法返回副本的原因.也是您的Asumapting 我了解该列表实际上不是不变的 是错误的.如您所见/a>,如果您致电listOf()没有参数. ,标准库将返回不变的空列表. 在Java中,List接口是每个默认值可变的,当您尝试修改不变的列表时,可能会导致异常,例如通过调用
)
回到java中,我曾经仅为一个void方法编写return ...但是Kotlin似乎不允许返回,而是使用return@methodname? 有人可以解释这是什么,如何增加价值? bAddLine.setOnClickListener { val selectedSeries = getSelectedSeries() if (selectedSeries.isEmpty()) { Toast.makeText(this, getString(R.string.toast_channel_mandatory), Toast.LENGTH_LONG).show() return@setOnClickListener } } 解决方案 来自 kotlinlang 网站: 在标签上返回 具有函数文字,局部函数和对象表达式,函数可以嵌套在kotlin中.合格的回报使我们可以从外部功能返回.最重要的用例是从lambda表达式返回.回想一下,当我们写这篇文章时: fun foo() { ints.forEach { if (it == 0) return // nonlocal ret
)
我正在制作一个小型服务器端应用程序,该应用程序将通过Websocket与浏览器进行通信,并正在考虑在Kotlin编写. 是否有Websockets API与Kotlin特别有效,或者任何Java Websockets API都适合该账单? 解决方案 这个 library 在Kotlin为我做得很好.实际上,大多数Java图书馆与Kotlin一起对我来说很好. 更新 最近发布了 module okhttp 支持WebSockets的库.这是一个Beta版本,但我会尝试一下,因为Okhttp本身与Kotlin合作. 其他解决方案 它是几年的退步,但我会考虑检查其他解决方案 您可以使用此java lib: http://www.eclipse.org/jetty/jetty/ 我们目前也将其用于Websocket Projet,并且与V13一起使用(与Python Lib不同).
)