Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么没有';t Kotlin是否遵循Java语法?_Kotlin - Fatal编程技术网

为什么没有';t Kotlin是否遵循Java语法?

为什么没有';t Kotlin是否遵循Java语法?,kotlin,Kotlin,我正在学习Kotlin作为Android开发者 出于好奇,为什么JetBrains的家伙不遵循Java风格的语法(如果他们可以的话),让开发人员更容易学习Kotlin 例如,在Kotlin中定义一个简单函数: fun simpleFunc(x: Int): Int { // do stuff } 他们为什么不这样做: fun Int simpleFunc(Int x) { // do stuff } 如果您能就这一点发表意见,我将不胜感激。正如中所提到的,Kotlin的语法使得在编译

我正在学习Kotlin作为Android开发者

出于好奇,为什么JetBrains的家伙不遵循Java风格的语法(如果他们可以的话),让开发人员更容易学习Kotlin

例如,在Kotlin中定义一个简单函数:

fun simpleFunc(x: Int): Int {

// do stuff

}
他们为什么不这样做:

fun Int simpleFunc(Int x) {

// do stuff

}
如果您能就这一点发表意见,我将不胜感激。正如中所提到的,Kotlin的语法使得在编译器可以推断类型声明时(Java不支持)省略类型声明更为自然。此外,根据我们对Kotlin的经验,我们没有看到任何证据表明Kotlin的类型声明语法给学习Kotlin的人带来了困难


(请注意,您建议的语法也不同于Java,因此不清楚您为什么认为它更容易学习。)

Java就像一杯咖啡,Kotlin的意思是咖啡中加了一点糖。在某些情况下,Kotlin确实提高了效率,使编程更加有趣

与Java相比,Kotlin更有效,实际上可以很好地使用Java。 在官方网站kotlinlang.org上查看图片中关于安全呼叫的示例

在链中,当存在null值时,您需要使用if函数来确定该值是否为null,但Kotlin只需要一个句子方法

另外,当您使用Gradle守护程序和智能编译时,Kotlin显示出比Java更快的编译速度

横轴表示十个连续的增量构建,其中一个核心文件发生了更改


您可以看到Gradle守护进程仍然需要两到三次运行来预热,但在这之后,两种语言的性能非常相似。在没有更改的情况下,Java每次热构建需要4.6秒,而Kotlin平均需要4.5秒。当我们更改一个没有被其他文件使用的文件时,Java平均需要7.0秒来进行热构建,Kotlin的时钟为6.1秒。最后,当我们更改项目中许多其他文件导入的文件时,一旦Gradle守护进程预热,Java需要7.1秒来执行增量构建,而Kotlin平均需要6.0秒

引文:1

  • kotlin团队描述了类型声明(如您的示例中)位于右侧的原因:

    为什么右侧有类型声明?

    我们相信这会使代码更具可读性。此外,它还提供了一些很好的语法特性。例如,很容易忽略类型注释。Scala也很好地证明了这不是一个问题


    它遵循scala语法,另一种流行的JVM语言。我喜欢这个答案,它得到了我的支持,但是这个图很糟糕,很容易被误解。水平轴的尺寸是多少?我们可以测试两个“5kB代码样本、10kB样本、15kB样本等”的编译时间,其中每个样本做的事情完全不同,但正好是5kB、10kB、15kB,等等。我做了十次跟踪,横轴表示十次连续的增量构建,其中一个核心文件发生了更改。您可以看到Gradle守护进程仍然需要运行两到三次来预热,但在这之后,两种语言的性能非常相似。在没有更改的情况下,Java每次热构建需要4.6秒,而Kotlin平均需要4.5秒。当我们更改一个没有被其他文件使用的文件时,Java平均需要7.0秒来进行热构建,Kotlin的时钟为6.1秒。最后,当我们更改项目中许多其他文件导入的文件时,一旦Gradle守护进程预热,Java需要7.1秒来进行增量构建,而Kotlin平均需要6.0秒。现在,这正是我的数据爱好者,但我感兴趣的是:编译的是什么样的代码?了解JVM的指令集有多少被使用,以及查看最终编译不同的特定函数的性能增量,这将是一件好事,但这远远超出了这个问题的范围。我并不是说Kotlin很难学习。但是,我仍然想知道我们是否可以避免学习另一种新语法,并且仍然享受Kotlin的所有功能。也许可以使用注释将Kotlin的功能强加于Java语法中,但最终的结果会比Kotlin难看得多,也不容易学。@yole,那是grt,但当程序员使用Intelij这样的IDE时,他们仍然会首先考虑使用自动生成的名称的类型。这一切都是为了取舍。不是吗?@KrupalShah这不是我的经历。请注意,IntelliJ IDEA Kotlin插件可以同时为变量名和类型(例如参数名)提供完成建议。