java_in_hours_chn icon indicating copy to clipboard operation
java_in_hours_chn copied to clipboard

编写一个Kotlin版本, 主要目标读者仍是零编程基础的群体

Open nobodxbodon opened this issue 8 years ago • 18 comments
trafficstars

之前与@chpengzh 提到, 写成后考虑发到kotliner社区. 另 @ice1000. 如果只是把这个教程的代码改为Kotlin版的, 不知是否合适? 另外, 个人对Kotlin没有经验, 写出的代码不知能否麻烦各位审核一下?

nobodxbodon avatar Nov 09 '17 07:11 nobodxbodon

可以改,Kotlin本来就是一个很简单的语言

ice1000 avatar Nov 10 '17 03:11 ice1000

没什么好审核的,你少写点null和问号就是好的,不要写感叹号

ice1000 avatar Nov 10 '17 03:11 ice1000

你少写点null和问号就是好的,不要写感叹号

请教深意? 比如这节的示例:

    for (int 序号 = 0; 序号 < 二队.length; 序号++) {
      if (二队[序号] != null) {
        二队[序号].自我介绍();
      }
    }

如何改进呢?

nobodxbodon avatar Nov 10 '17 05:11 nobodxbodon

二队.forEach { it?.自我介绍() }

ice1000 avatar Nov 10 '17 10:11 ice1000

不使用forEach的话也可以

 for (int 序号 = 0; 序号 < 二队.length; 序号++)
   二队[序号]?.自我介绍();

ice1000 avatar Nov 10 '17 10:11 ice1000

Kotlin有意让你少让null出现,尽可能让全世界的变量从一开始就有值。 感叹号是Kotlin提供的一个绕过这个检查的脏方法,是临时解决方案,是不推荐的,故意把这个语法搞的很丑的,因此应该尽量少出现

ice1000 avatar Nov 10 '17 10:11 ice1000

你先写,遇到问题问我就是

ice1000 avatar Nov 10 '17 10:11 ice1000

多谢! 代码应该会比Java版的短不少. 现在感觉我这样Kotlin新手写教程好像有点勉强...

nobodxbodon avatar Nov 10 '17 16:11 nobodxbodon

你先写,遇到问题问我就是

不要小看我,我可是写过一个完整的Kotlin Parser的人(是Parse Kotlin,不是用Kotlin Parse)

ice1000 avatar Nov 10 '17 18:11 ice1000

Kotlin有一个好处,就是 extension 。比如你上面那个代码不可避免的要出现.length,可以这样解决

val Array<队的类>.长度 = this.length;

 for (int 序号 = 0; 序号 < 二队.长度; 序号++)
   二队[序号]?.自我介绍();

ice1000 avatar Nov 10 '17 18:11 ice1000

还忘了个事,Kotlin没有这种三段式的for循环,一般写

val Array<队的类>.长度 = this.length;

 for (序号 in 0..二队.长度)
   二队[序号]?.自我介绍();

ice1000 avatar Nov 10 '17 18:11 ice1000

这个 in 就真的没办法了,这是一个语法

ice1000 avatar Nov 10 '17 18:11 ice1000

咳咳, 所以说...我写的kotlin代码多半是要麻烦审核的. 不过extension也许不会囊括在这样的"一天入门"里. 请问对示例代码的主题有没有什么意见? 这个版本里是尽量用与"人"相关的, 然后最后一个聊天程序里尽量包括一些之前的知识点.

nobodxbodon avatar Nov 10 '17 18:11 nobodxbodon

还没看,等会看

ice1000 avatar Nov 11 '17 01:11 ice1000

已开新代码库https://github.com/program-in-chinese/kotlin_in_hours_chn, 基本按照Java版的例子进行.

nobodxbodon avatar Nov 12 '17 06:11 nobodxbodon

@ice1000 @chpengzh 感觉有烂尾的可能, 就先发了论坛帖: https://kotliner.cn/post/6335893405691236352. 先看看反馈吧.

nobodxbodon avatar Nov 13 '17 17:11 nobodxbodon

我没有write access。请在README里面添加代码块高亮谢谢。

ice1000 avatar Nov 13 '17 17:11 ice1000

@ice1000 多谢! 刚加了, 也加了write access.

nobodxbodon avatar Nov 13 '17 18:11 nobodxbodon