Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
nobodxbodon opened this issue Nov 9, 2017 · 18 comments

Comments

@nobodxbodon
Copy link
Member

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

@nobodxbodon
Copy link
Member Author

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

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

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

如何改进呢?

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

不使用forEach的话也可以

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

@nobodxbodon
Copy link
Member Author

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

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

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

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

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

@ice1000
Copy link

ice1000 commented Nov 10, 2017

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

@nobodxbodon
Copy link
Member Author

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

@ice1000
Copy link

ice1000 commented Nov 11, 2017

还没看,等会看

@nobodxbodon
Copy link
Member Author

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

@nobodxbodon
Copy link
Member Author

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

@ice1000
Copy link

ice1000 commented Nov 13, 2017

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

nobodxbodon added a commit to program-in-chinese/kotlin_in_hours_chn that referenced this issue Nov 13, 2017
@nobodxbodon
Copy link
Member Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants