首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能用Kotlin写这个特殊的任务?

Kotlin是一种现代化的编程语言,可用于开发各种应用程序,包括移动应用、Web应用和后端服务。它具有许多优点,如简洁性、安全性、互操作性和可靠性。然而,对于特定的任务,可能不适合使用Kotlin来完成。以下是一些可能的原因:

  1. 生态系统限制:Kotlin相对于其他编程语言来说,生态系统相对较小。这意味着在某些特定领域,可能缺乏特定库、框架或工具的支持,从而使得使用Kotlin开发相关任务变得困难。
  2. 平台限制:Kotlin最初是为Java虚拟机(JVM)设计的,因此在其他平台上的支持可能有限。如果特殊任务需要在非JVM平台上运行,如嵌入式系统或特定硬件设备,那么Kotlin可能无法满足需求。
  3. 性能要求:尽管Kotlin在性能方面表现良好,但对于某些特殊任务,如高性能计算或实时系统,可能需要更接近底层的编程语言,以获得更好的性能。
  4. 已有代码库:如果特殊任务需要与已有的代码库或项目集成,而这些代码库或项目是使用其他编程语言编写的,那么使用Kotlin可能会导致集成困难或不兼容的问题。

总之,虽然Kotlin是一种强大的编程语言,但在某些特殊任务中可能不是最佳选择。在选择编程语言时,需要综合考虑任务需求、生态系统支持、平台限制和性能要求等因素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【码上开学】Kotlin 高阶函数、匿名函数和 Lambda 表达式

首先这个 Fun 作为函数类型其实是错Kotlin 里并没有这么一种类型来标记这个变量是个「函数类型」。...,都叫做高阶函数,这只是个对这一类函数称呼,没有任何特殊性,Kotlin 高阶函数没有任何特殊功能,这是想说。...那既然都是一个东西,为什么直接函数名,而要加两个冒号呢? 因为加了两个冒号,这个函数才变成了一个对象。 什么意思?...不过我们先停下想一想:这个 Lambda 这也那也……它不迷茫吗?它是怎么知道自己参数类型和返回值类型? 靠上下文推断。调用函数在声明地方有明确参数信息吧?...但是我们刚才也说过了函数是不能作为参数传递,也不能赋值给变量,对吧? 那为什么匿名函数就这么特殊呢? 因为 Kotlin 匿名函数——是——函——数。它是个对象。

2.1K20

那个男人再发力,原来以前学 Lambda 都是假

首先这个 Fun 作为函数类型其实是错Kotlin 里并没有这么一种类型来标记这个变量是个「函数类型」。...,都叫做高阶函数,这只是个对这一类函数称呼,没有任何特殊性,Kotlin 高阶函数没有任何特殊功能,这是想说。...那既然都是一个东西,为什么直接函数名,而要加两个冒号呢? 因为加了两个冒号,这个函数才变成了一个对象。 什么意思?...不过我们先停下想一想:这个 Lambda 这也那也……它不迷茫吗?它是怎么知道自己参数类型和返回值类型? 靠上下文推断。调用函数在声明地方有明确参数信息吧?...但是我们刚才也说过了函数是不能作为参数传递,也不能赋值给变量,对吧? 那为什么匿名函数就这么特殊呢? 因为 Kotlin 匿名函数——是——函——数。它是个对象。

64320

MAC上使用Android Studio 3.0Gradle问题小解

今天开始认真学习安卓开发( ),就打算直接使用 Kotlin 语言在 AS 3.0 中代码,简洁又高效。...用过 Linux 系统朋友很清楚,一个命令行就可以知道: gradle -v 这个命令能查看 Gradle 版本, Mac 显示 no such command ,所以先安装 Gradle ,参考官网安装指导..., Homebrew : $ brew install gradle 这样安装好之后,一般 Gradle Home 也设置好了,此文时候 Gradle 在机器上版本是 3.5 。...OK 了,开始代码吧!不过还是碰到了一些不爽问题,就像我上面描述:Build 速度超慢、 support 包不能正确编译、 Genymotion 模拟器连接上等。...另外还遇到了一个问题: implementation 'com.android.support:appcompat-v7:25.4.0' 还是不能用,不知道为什么,有朋友知道恳请留言指导,谢谢!

2.6K20

Kotlin 协程总结

现在先把这个概念放下,只需要记住协程就是这样就行了。 这种「用同步方式异步代码」看起来很方便吧,那么我们来看看协程具体好在哪。...为什么 suspend关键字并没有实际去操作挂起,但 Kotlin 却把它提供出来? 因为它本来就不是用来操作挂起。...另外这个「耗时」还有一种特殊情况,就是这件事本身做起来并不慢,但它需要等待,比如 5 秒钟之后再做这个操作。这种也是 suspend 函数应用场景。...四、总结 协程就是切线程; 挂起就是可以自动切回来切线程; 挂起非阻塞式指的是它能用看起来阻塞代码写出非阻塞操作,就这么简单。 参考: 1,Kotlin 协程用力瞥一眼 - 学不会协程?...很可能因为你看过教程都是错 2,Kotlin 协程挂起好神奇好难懂?今天把它皮给扒了 3,到底什么是「非阻塞式」挂起?协程真的更轻量级吗?

2.9K11

Kotlin Nothing 详解

} } 在这个函数里,一个 if 判断,true 就返回,false 就抛异常,这个写法很常见吧?它在 else 这个分支,是不是就只抛异常而返回值了?...实际上 Java 和 Kotlin 任何方法或者说函数,在抛异常时候都是返回值——你都抛异常还返回啥呀返回?是吧?...这是一种很常用工具函数写法,包括 Kotlin 和 Compose 官方源码里也有这种东西。 那么我们继续来看它返回值类型:都不返回了,就没必要还 String 了吧?那什么?...} 虽然找不到 Nothing 实例,但是这个函数本来就是永远抛异常,找不到实例也没关系。哎,这不就能用了吗?对吧? 不过,能用能用,这么写有啥意义啊?是吧?价值在哪?...} 不过一般很少有人这么去用,大部分都是用在刚才说抛异常场景,这是非常常见一种用法,你业务可能用不到,但是基础架构团队给全公司框架或者对外 SDK 的话,用到它概率就非常大了。

25830

Kotlin 开发者角度看 Java 缺失特性

作者 | Nicolas Fränkel 译者 | 明知山 策划 | 李冬梅 近二十年来,Java 一直是谋生工具,直到几年前开始学习 Kotlin。...虽然 Kotlin 也被编译为 JVM 字节码,但有时候还是不得不一些  Java 代码。每次 Java 代码时,都不禁想,为什么 Java 代码看起来没有 Kotlin 那么好。...Kotlin 就没有给你这种选择:每个属性和局部变量都需要定义为 val 或 var。另外,不能重新给方法参数赋值。 Java 中 var 关键字完全不同。首先,它只能用于局部变量。...Kotlin 提供了扩展函数来解决同样问题。 Kotlin 提供了不通过类继承或使用装饰器等设计模式来实现扩展类或接口能力。这可以通过一种叫作扩展特殊声明来实现。 ...只在必要时候使用 Java,因为 Kotlin 已经成为 JVM 首选语言。

77020

会写「18.dp」只是个入门——Kotlin 扩展函数和属性(Extension FunctionsProperties)

为什么?很简单,因为 Integer、Float、Double 这几个类没提供这个方法,所以我们只能用 Math 类静态方法。...这几个类同样没有提供 pow() 这个函数,但好是,我们依然可以用看起来像是成员函数方式来做幂运算。 2f.pow(10) // Kotlin 可以这么 为什么?...这个函数这么,它到底是属于谁呀?属于外部类还是左边前缀类?属于谁?这个「属于谁」其实有点模糊需要问再明确点:它是谁成员函数?当然是外部成员函数了,因为它写在它里面嘛,对吧?...不过还是要把这个告诉你,因为这样你知识体系才是完整。 说到完整啊,每个做 Android 的人都应该把自己支撑体系扩充一下,让自己技能树变完整,你才能百毒侵,工作和面试都不怕。...记不住把视频多刷几遍,不要怕,课程里也经常跟我学员说:你把每节课多刷几遍,别嫌费时间,又不是电视剧,知识密度这么大课程你多看几遍只赚亏。

91210

为什么Kotlin可读性比Java好?

他是 Scala ,有一天他这么跟我说: 之前一年多时间都是 Scala ,现在看到 Java 代码,就像在看汇编一样。...基于 Kotlin 抽象程度更接近 Scala,一年多 Kotlin 之后,你也会有类似的感觉。OK,第一点讲到这里。接下来我们来看第二点。...这,就是为什么 Effective Java 里面,建议把所有能用 final 修饰地方都用 final 修饰原因。很多人认为,使用 final 是为了避免多线程同步问题。...当一个东西优势不是很容易被识别(注意,不容易被识别,代表这个优势不大,或者不重要,这是两回事),同时又要多付出一些努力时候,我们代码默认设置是不加 final,这就非常合情合理了。...由于篇幅关系,这些还有剩下一些机制,这里就不展开讲了。当你 kotlin 代码时候,多思考一下,Kotlin 为什么要这样设定,你就会明白,都是有原因,多数情况下,都是有优势

1.9K50

什么叫代码可读性?为什么Kotlin可读性比Java好?

基于Kotlin抽象程度更接近Scala,一年多Kotlin之后,你也会有类似的感觉。 OK,第一点讲到这里。接下来我们来看第二点。...之前一篇文章说过,Kotlinnullsafety是最喜欢特性,如果说第二喜欢特性是什么,那就是关键字。在团队里面,也一遍一遍跟同事强调,能用地方就不要用。...这,就是为什么Effective Java里面,建议把所有能用修饰地方都用修饰原因。很多人认为,使用是为了避免多线程同步问题。...当一个东西优势不是很容易被识别(注意,不容易被识别,代表这个优势不大,或者不重要,这是两回事),同时又要多付出一些努力时候,我们代码默认设置是不加,这就非常合情合理了。...由于篇幅关系,这些还有剩下一些机制,这里就不展开讲了。当你kotlin代码时候,多思考一下,Kotlin为什么要这样设定,你就会明白,都是有原因,多数情况下,都是有优势

1.1K70

Gradle基础|自定义插件并上传到JitPack

插件作用就是添加我们自己一些逻辑到项目执行过程中,这个做法在 Gradle 中称其为任务,或者说 Task ,从而对项目进行测试、编译、打包等; 也可以对项目中现有的对象类型添加新扩展属性、方法等...这些插件一般还要在model中再依赖其他组件,如果只用代码组件,而启用这些插件,那还能正常使用吗?...这个目录比较特殊,对于每一个工程而言,有且只能有一个 buildSrc 目录,并且必须位于项目的根目录,如果存在 buildSrc 这个目录,那么 Gradle 在运行时会自动编译并测试这里面的代码,并将其放入构建脚本类路径中...,根据你自己写法而定,比如这里想使用 kotlin插件代码,就使用如下,默认官方推荐了三种目录配置写法: src/main/kotlin src/main/java src/main/groovy...提示找不到这个插件,为什么不是在 settings.gradle 中引入了吗? 我们在最上面说过了,buildSrc 本身是一个特殊项目,Gradle 会自动编译并引入。

1K10

Kotlin 和 Checked ExceptionKotlin 和 Checked Exception

对于这个话题已经思考了很久,觉得有必要分享一下对此看法,避免误解传播,所以我还是决定一篇文章。...Java 设计者知道有些地方可以省略,却故意把它做成多余。不理解语言“可用性”的人,往往盲目地以为简短就是好,多几个字就是丑陋优雅,其实不是那样。...现在就来讲一下,CE 为什么是很重要语言特性,然后讲一下为什么 Hejlsberg 对它批评是站不住脚。 首先, C# 代码时最让头痛事情之一,就是 C# 没有 CE。...每调用一个函数(不管是标准库函数,第三方库函数,还是队友函数,甚至自己函数),都会疑惑这个函数是否会抛出异常。...可以看出来,他并不理解这种静态检查是什么规模问题。要能用静态分析发现 C# 代码里被忽略异常,你必须进行“全局分析”,也就是说为了知道一个函数是否会抛出异常,你不能只看这个函数。

69820

你造吗,null 也能 toString()!

{ return ... } val matchPoint = resolveCurrentMatchPoint() 这时候呢,为了检验算法是否符合预期,通常我会在这里把这个 MatchPoint...如果我们是 Java 的话,也就只好认命了,可现在Kotlin 哎。...把上面的代码改成了下面这样,想想也算是大无畏革命精神嘛, crash 谁 crash: Log.d(TAG, matchPoint.toString()) :大不了就 crash,谁怕谁 Kotlin...最初接触 Kotlin 时候,确实有点儿不适应这种类型系统,写点儿代码好麻烦啊,怎么处处都得考虑变量是不是为空问题 —— 虽然很喜欢这个东西,当年知道 swift 有这样特性时候也曾羡慕不已...—— 这时候,大家能体会到为什么 Kotlin 函数参数都是只读变量了吗?

3.4K10

Android 官方怒推 Jetpack Compose 到底是什么

这两年时间 Android 团队在干嘛?在开发这个库,在开发 Compose。一个 UI 框架而已,为什么要花两年来打造呢?...刚才说过一次,Compose 渲染机制、布局机制、触摸机制全都是新,所以这个 Text() 底层不是 TextView,也不是任何一个原生控件,而是直接调用了更下层绘制 API,也就是 Canvas...比如左边这个布局里 TextView,如果它对应数据改变了,要怎么把新文字更新到它?很简单:findViewById()、setText() 对吧?...这也在一定程度上回答了一个问题: 为什么 Compose 只能用 Kotlin ,而不能用 Java?因为它用了大量 Kotlin 特性,而这些特性用 Java 不能简单实现。...那么现在我们再往回拐:传统 xml 写法和 Compose Kotlin 写法,为什么一个是「命令式」,一个是「声明式」?这个问题其实本身就是错

2.2K30

正确地使用 Kotlin internal

那么就让我们来看看怎么解决这个问题吧。 这个问题其实很好解决,不知道为什么之前都没有人发现。 方法就是欺负 Java 语法不行。 比如说我们有这个 Kotlin internal 函数。...方法一 我们可以使用 @JvmName 这个神器。 这个注解可以让 Kotlin 编译器改变生成函数在字节码里面的名字,但是在代码里面依然可以使用原本名字。...Kotlin 独占了,因为如果在 jar 里面引用的话,函数名就是 @JvmName 参数, which Java 根本不出来,只有 Kotlin 可以用。...我们知道, Kotlin 允许使用 ` ` 把一个不合法标识符强行合法化,当然本身是合法能用。 一般我们都只用于关键字冲突情形,可你们一定没想到有这种妙用吧。...比如我在一个个人项目里某个文件就用了这种操作。 当然不是为了 internal ,只是为了好看。

3K31

你绝对想不到 Kotlin 泛型给反射留下了怎样坑!

为什么?...本着息事宁人态度,类型匹配强转下不就得啦: it.get(this@description as out Person) // 错误!!...遇坑填坑 有坑填,不是好码农啊。 前面抛出这么个大坑,说实在,不给出解决方案都不好意思这篇文章。 3.1 类型强转方案 谁说类型强转不行了?谁说??...3.2 Java 反射方案 Kotlin 反射不能用?不用还不行了么,打起还躲起吗,什么世道。。...这个故事呢,你说 Kotlin 事儿多也行,说它严谨也行,反正,解决方案咱都有,大不了,大不了去天桥上贴膜。。什么破代码,写了! 关注公众号 Kotlin ,获取最新 Kotlin 动态。

8.2K21

Kotlin 泛型详解

最近一段时间在网上发了一套 Kotlin 入门视频,涵盖了基础语法、面向对象、高阶函数、DSL、协程等比较有特色知识点,不过有朋友提出了疑问:这门课为什么专门讲讲泛型、反射和注解呢?...最早听到这个问题时候,反应比较懵逼,因为居然没有感觉到 Kotlin 反射、泛型特别是注解有专门学习必要,因为他们跟 Java 实在是太像了。...不过 numbers 中可以添加 Number 类型对象,所以我添加个 Integer 可以呢?可以: numbers.add(1); 那么要想添加一堆 Integer 呢?...super E 用法,这表示元素类型为 E 及其父类,这个通常也叫作逆变。 2.2 Kotlin 型变 型变包括协变、逆变、不变三种。 下面我们看看 Kotlin 是怎么支持这个特性。...对于 Foo ,其中 T 是一个具有上界 TUpper 型变类型参数,Foo 对于读取值时等价于 Foo 而对于值时等价于 Foo。

1.2K20

为何早先于你学习并应用Kotlin

但是,话锋一转,想问是,作为 Java or Android 开发技术人员你,为什么才开始学习 Kotlin ,或者甚至夸张地才了解到 Kotlin 这个单词?...为什么要说简书这个普普通通 APP 呢?因为:搜索真的很重要!去年被一款叫做 Unity3D 游戏开发软件吸引住而开始打算自学编程应用。...刚开始也这样认为,后面发现新语言新特性让能用少量代码写出更优雅程序,立马下定决心学习 Kotlin ,在学习之前还搜索了与 JVM 相关其他语言,包括: Scala 、 Groovy 、...为什么起步晚但学习 Kotlin 却比有些人早? 是偶然吗?看未必。...是的,技多不压身,但是你就是不能跑在别人前面,问问我们自己:擅长什么?有什么厉害之处?我们为什么精通某一个方向?何乐而不为啊!

88330

Kotlin学习日志(四)函数

fun Test():Int Kotlin设计师初衷就是把函数当成一个特殊变量,既然函数被当作一种特殊变量,同时每个变量都有变量类型,假如函数存在返回参数,那么自然把返回参数类型作为该函数变量类型...} 这个Unit是代表无需返回具体值,所以Kotlin代码中往往会省略掉,所以你都可以(PS:那你说这么多废话干啥!!!)...= getFourBook("中国四大名著是:","罗贯中《三国演义》") } 这一步是没有问题了,加入要改第四本书值呢?...这个地方为什么用截图而不是直接贴代码呢,因为觉得这个引用方式比较酷,还用蓝色标出来了。我们运行一下看看结果吧,不然就是银样镴枪头,中看不中用。 运行效果如下: ?...这个地方贴代码,因为希望有人能敲一边,而不是一味复制和粘贴,那样是没有用。 偶次数点击效果图如下 ?

1.8K10
领券