第一章、Kotlin:定义和目的
1.Kotlin和Java都是静态类型的编程语言,这意味着所有表达式的类型在编译期已经确定了,而编译期就能验证对象是否包含了你想访问的方法或者字段。
这与动态类型编程语言形成鲜明对比,在JVM上的代表包括Groovy和JRuby。这些语言允许你定义可以存储任何数据类型的变量,或者返回任何数据结构的灵活性。缺点是:在编译期不会发现像名字拼写错误这样的问题,继而导致运行时的错误。
2.类型推到:编译期从上下文腿短变量类型的能力。
3.函数式编程的核心概念:
- 头等函数---把函数当做值使用,可以用变量保存它,把它当做参数传递,或者当作其他函数的返回值。
- 不可变性---使用不可变对象,这保证了它们的状态在其创建之后不能再变化。
- 无副作用---使用的是纯函数。此类函数在输入相同时会产生同样的结果,并且不会修改其他对象的状态,也不会和外面的世界交互。
函数式编程风格的好处:
- 简洁
- 多线程安全(多线程程序中最大的错误来源之一就是在没有采用适当同步机制的情况下,在不同的线程上修改同一份数据。如果使用的是不可变数据结构和纯函数,就能保证不安全的修改根本不会发生,也不需要为其设计复杂的同步方案)
- 测试更加容易
Kotlin支持函数式编程风格,包括:
- 函数类型---允许函数接受其他函数作为参数,或者返回其他函数
- lambda表达式---用最少的样板方法传递代码块
- 数据类---提供了创建不可变值对象的简明语法
- 标准库的丰富API集合