原文已修改

回复

javafm 发起了问题 • 1 人关注 • 0 个回复 • 737 次浏览 • 2017-07-14 12:30 • 来自相关话题

Android开发语言一下从“古老”的变成先进的了,哈哈

grlsr 发表了文章 • 2 个评论 • 1333 次浏览 • 2017-05-26 14:51 • 来自相关话题

大家都知道了吧,现在Android开发已经支持Kotlin了,真是一个大新闻,大家赶快来一起根着做吧:在Android Studio 3中使用Kotlin
大家都知道了吧,现在Android开发已经支持Kotlin了,真是一个大新闻,大家赶快来一起根着做吧:在Android Studio 3中使用Kotlin

Kotlin 1.0 Beta 3 已经发布

Kot 发表了文章 • 1 个评论 • 1282 次浏览 • 2015-12-16 09:26 • 来自相关话题

我们很高兴又呈现了Kotlin 1.0 的Beta版本。我们正在努力完成标准库和摆脱语言中过时的旧结构、以及修复Bug、性能提升、面向未来的检查。
全部的修改列表在此
查看已关闭的提问在此
 
一、库变更
我们努力让标准库在1.0之前进入最佳状态,这会涉及一些实验部分,所以出现了功能的增删,我们计划在1.0build(或者rc)版本中做最后的清理:移除所有的过时和传统部分。
这里我们只从所有修改中给出一个亮点:`contains()`和其他相似的扩展,现在集合接受元素的超类。// ns: String?
// cs: CharSequence
// i: Int
strs.contains(ns) // accepted now
strs.contains(cs) // accepted now
strs.contains(i) // ERROR (in fact, a deprecation warning, but will be an error soon)我们发现之前建议的`containsRow`方式低效。而选择采用`contains()`更宽容一些,同时又保持了最初的安全意图。注意集合的接口本身是完整的,而这一切是通过扩展函数完成。使用`Code Cleanup`迁移你的代码。
 
二、语言修改
一些语言修改的亮点,全部列表在此
很多之前是过时的现在已经变成错误,使用`Code Cleanup`来迁移。
 
1. When 表达式
这类代码已经证明是有问题的,所以我们决定让他过时。when {
foo.isValid(), foo.isReady() -> process(foo)
...
}很多人以为条件`foo.isValid(), foo.isReady()`代表foo是volid和read同时满足的,但是实际是这个逗号是表示`or`,解决方法十分简单:使用 `||`代替:when{
foo.isValid() || foo.isReady() -> process(foo)
}`Code Cleanup`将会迁移你的代码。
 
2. 注解
一个Bug被解决,他是防止我们以注解参数使用数组时为默认值:annotation class Entry(val value: String)

annotation class Example(
val entries: Array<Entry> = arrayOf(Entry("a"), Entry("b")) // OK now
)3.Enum.values()
最近,我们修改了传统的Java的`Enum.values()`成为一个属性:`Enum.values`,但是现在我们回滚这个修改。因为这里有一个不愉快的细节用例:在枚举中可能会有一个叫values的常量,同时这里没有办法做到二取一。我们考虑不同的意见后,决定在这次清理中将`values`更改回一个方法。
所以,`values`属性是过时的,`values()`方法是不过时的。
 
4.可见性与作用域规则
你们清理并修复了可见性和作用域规则,所以: 
pretected`成员在伴生对象是允许。从子类中调用伴生对象的非`@JvmStatic protected`成员会标记成错误(不支持)开放属性的`private`级别 setter 已经弃用。本地`sealed`类弃用(从来不是可用)覆盖setter不用削弱可见性内部类不再允许内嵌枚举中在lambda、对象常量、本地方法中使用没有初始化的变量是禁止的

三、 Android扩展
我们已经合并了`Kotlin plugin for IntelliJ IDEA`和`Kotlin Extensions For Android`插件。
同样,我们也增加了对Android的`product flavors`的支持,现在不同渠道的属性可以在不同的包中。productFlavors {
free {
versionName "1.0-free"
}
pro {
versionName "1.0-pro"
}
}例如,如果我们在build.gradle文件中有两个渠道。
我们现在不仅在`main`代码堆中的布局,同时在渠道布局中也能使用合并的属性。// Import synthetic properties for the `activity_free.xml` layout in the `free` flavor
import kotlinx.android.synthetic.free.activity_free.versionMarker

class FreeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
setContentView(R.layout.activity_free)
...
versionMarker.text = "Free version"
}
}注意,main代码集合堆中的布局现在都在`kotlinx.android.synthetic.main`包中,旧的命名约定已经过时。
 
四、IDE中有什么新的
1. Android的扩展插件已经合并到Kotlin插件中,不再需要单独安装。
2. 当新建一个Gradle项目时,我们已经添加一个Kotlin选项:
 
3. 调试:堆栈跟踪导航现在支持内联函数中的栈帧,同样步入内联函数时也有一些提高。
4. 增加了三种属性的快速修复

 5. 引入变量(Ctrl + Alt + V / Cmd + Alt + V)现在支持多声明表达式。

6. 同样他允许选择lambda表达式和匿名函数的容器

7. Beta3给String模板​片段带来引入变量、参数、属性、函数

8. 最后,一个试验性的特征已经添加——在IDE中添加对Kotlin脚本文件最基本的支持。
 
原文地址: http://blog.jetbrains.com/kotl ... -out/ 查看全部
我们很高兴又呈现了Kotlin 1.0 的Beta版本。我们正在努力完成标准库和摆脱语言中过时的旧结构、以及修复Bug、性能提升、面向未来的检查。
全部的修改列表在此
查看已关闭的提问在此
 
一、库变更
我们努力让标准库在1.0之前进入最佳状态,这会涉及一些实验部分,所以出现了功能的增删,我们计划在1.0build(或者rc)版本中做最后的清理:移除所有的过时和传统部分。
这里我们只从所有修改中给出一个亮点:`contains()`和其他相似的扩展,现在集合接受元素的超类。
// ns: String?
// cs: CharSequence
// i: Int
strs.contains(ns) // accepted now
strs.contains(cs) // accepted now
strs.contains(i) // ERROR (in fact, a deprecation warning, but will be an error soon)
我们发现之前建议的`containsRow`方式低效。而选择采用`contains()`更宽容一些,同时又保持了最初的安全意图。注意集合的接口本身是完整的,而这一切是通过扩展函数完成。使用`Code Cleanup`迁移你的代码。
 
二、语言修改
一些语言修改的亮点,全部列表在此
很多之前是过时的现在已经变成错误,使用`Code Cleanup`来迁移。
 
1. When 表达式
这类代码已经证明是有问题的,所以我们决定让他过时。
when {
foo.isValid(), foo.isReady() -> process(foo)
...
}
很多人以为条件`foo.isValid(), foo.isReady()`代表foo是volid和read同时满足的,但是实际是这个逗号是表示`or`,解决方法十分简单:使用 `||`代替:
when{
foo.isValid() || foo.isReady() -> process(foo)
}
`Code Cleanup`将会迁移你的代码。
 
2. 注解
一个Bug被解决,他是防止我们以注解参数使用数组时为默认值:
annotation class Entry(val value: String)

annotation class Example(
val entries: Array<Entry> = arrayOf(Entry("a"), Entry("b")) // OK now
)
3.Enum.values()
最近,我们修改了传统的Java的`Enum.values()`成为一个属性:`Enum.values`,但是现在我们回滚这个修改。因为这里有一个不愉快的细节用例:在枚举中可能会有一个叫values的常量,同时这里没有办法做到二取一。我们考虑不同的意见后,决定在这次清理中将`values`更改回一个方法。
所以,`values`属性是过时的,`values()`方法是不过时的。
 
4.可见性与作用域规则
你们清理并修复了可见性和作用域规则,所以: 
  • pretected`成员在伴生对象是允许。
  • 从子类中调用伴生对象的非`@JvmStatic protected`成员会标记成错误(不支持)
  • 开放属性的`private`级别 setter 已经弃用。
  • 本地`sealed`类弃用(从来不是可用)
  • 覆盖setter不用削弱可见性
  • 内部类不再允许内嵌枚举中
  • 在lambda、对象常量、本地方法中使用没有初始化的变量是禁止的


三、 Android扩展
我们已经合并了`Kotlin plugin for IntelliJ IDEA`和`Kotlin Extensions For Android`插件。
同样,我们也增加了对Android的`product flavors`的支持,现在不同渠道的属性可以在不同的包中。
productFlavors {
free {
versionName "1.0-free"
}
pro {
versionName "1.0-pro"
}
}
例如,如果我们在build.gradle文件中有两个渠道。
我们现在不仅在`main`代码堆中的布局,同时在渠道布局中也能使用合并的属性。
// Import synthetic properties for the `activity_free.xml` layout in the `free` flavor
import kotlinx.android.synthetic.free.activity_free.versionMarker

class FreeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
setContentView(R.layout.activity_free)
...
versionMarker.text = "Free version"
}
}
注意,main代码集合堆中的布局现在都在`kotlinx.android.synthetic.main`包中,旧的命名约定已经过时。
 
四、IDE中有什么新的
1. Android的扩展插件已经合并到Kotlin插件中,不再需要单独安装。
2. 当新建一个Gradle项目时,我们已经添加一个Kotlin选项:
 
3. 调试:堆栈跟踪导航现在支持内联函数中的栈帧,同样步入内联函数时也有一些提高。
4. 增加了三种属性的快速修复

 5. 引入变量(Ctrl + Alt + V / Cmd + Alt + V)现在支持多声明表达式。

6. 同样他允许选择lambda表达式和匿名函数的容器

7. Beta3给String模板​片段带来引入变量、参数、属性、函数

8. 最后,一个试验性的特征已经添加——在IDE中添加对Kotlin脚本文件最基本的支持。
 
原文地址: http://blog.jetbrains.com/kotl ... -out/