售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
Title Page
Copyright and Credits
Functional Kotlin
Dedication
Packt Upsell
Why subscribe?
PacktPub.com
Contributors
About the authors
About the reviewer
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Kotlin – Data Types, Objects, and Classes
Classes
Properties
Methods
Inheritance
Abstract classes
Interfaces
Objects
Object declarations
Companion objects
Generics
Type alias
Nullable types
Checking for null
Checking for non-null types
Safe calls
The Elvis (?:) operator
The (!!) operator
Kotlin's type system
The Any type
Minimum common types
The Unit type
The Nothing type
Other types
Data classes
Canonical methods
The copy() method
Destructuring methods
Annotations
Enum
Summary
Getting Started with Functional Programming
What is functional programming?
Basics concepts
First-class and higher-order functions
Pure functions
Recursive functions
Lazy evaluation
Functional collections
Implementing a functional list
Summary
Immutability - It's Important
What is immutability?
Implementing immutability in Kotlin
The difference between var and val
Compile time constants
Types of immutability
Immutable reference (referential immutability)
Immutable values
Immutable collections
The advantages of immutability
Thread safety
Low coupling
Referential transparency
Failure atomicity
Caching
Compiler optimization
Pure functions
The disadvantages of immutability
Summary
Functions, Function Types, and Side Effects
Functions in Kotlin
Returning two values from a function
Extension functions
Default arguments
Nested functions
Function types in functional programming
Lambda
Function as property
High order functions
Pure functions and side effects
Side effects
Pure functions
Summary
More on Functions
Single-expression functions
Parameters
vararg
Lambda
Named parameters
Named parameters on high-order functions
Default parameters
Extension functions
Extension functions and inheritance
Extension functions as members
Extension functions with conflicting names
Extension functions for objects
Infix functions
Operator overloading
Binary operators
Invoke
Indexed access
Unary operators
Type-safe builders
Creating a DSL
Inline functions
Inline restrictions
Recursion and corecursion
Summary
Delegates in Kotlin
Introduction to delegation
Understanding delegation
Delegates in Kotlin
Property delegation (standard delegates)
The Delegates.notNull function and lateinit
The lazy function
Observing property value change with Delegates.Observable
The power of veto – Delegates.vetoable
Delegated map
Custom delegation
Local delegates
Class delegation
Summary
Asynchronous Programming with Coroutines
Introduction to coroutines
Understanding JVM threads
Hello, coroutine world!
Using coroutines in real life
Synchronous implementation
Callbacks
Java Futures
Promises with Kovenant
Coroutines
Coroutine context
Channels
Channel pipelines
Managing mutable state
Switching contexts
Thread safe structures
Mutexes
Actors
Summary
Collections and Data Operations in Kotlin
An introduction to collections
The advantages of a collections framework
List and MutableList
Set and MutableSet
Map and MutableMap
Data operations in a collection
The map function
The filter function
The flatMap function
The drop functions
The take functions
The zip function
Grouping collections
Summary
Functional Programming and Reactive Programming
Combining FP with OOP
Functional reactive programming
The Reactive Manifesto
Functional reactive frameworks for Kotlin
Getting started with RxKotlin
Downloading and setting up RxKotlin
Comparing the Pull mechanism with the RxJava Push mechanism
Observables
How Observable works
The Observable.create method
The Observable.from methods
Iterator<T>.toObservable
Subscriber – the Observer interface
Subscribing and disposing
Summary
Functors, Applicatives, and Monads
Functors
Monads
Applicatives
Summary
Working with Streams in Kotlin
Introduction to Streams
Collections versus Streams
Working with Streams
Primitive streams
Stream factory methods
Stream Builder
Creating empty Streams – Stream.empty()
Creating a Stream by passing elements – Stream.of()
Generating Streams – Stream.generate()
Collector and Stream.collect – collecting Streams
The Collectors.toList(), Collectors.toSet(), and Collectors.toCollection() methods
Collecting into Map – Collectors.toMap()
Joining Stream of strings – Collectors.joining()
Grouping elements of Stream – Collectors.groupingBy()
Summary
Getting Started with Arrow
Function composition
Partial application
Binding
Reverse
Pipes
Currying
Differences between the currying and partial application
Logical complement
Memoization
Partial functions
Identity and constant
Optics
Configuring Arrows code generation
Generating lenses
Summary
Arrow Types
Option
Arrow's type hierarchy
Either
Monad transformers
Try
State
Corecursion with State
Summary
Kotlin's Quick Start
Writing and running Kotlin
Kotlin online
On your console
Installing SDKMAN
Installing Kotlin through SDKMAN
Kotlin's REPL
Compiling and executing Kotlin files
Using Gradle
Install Gradle through SDKMAN
Creating a distributable Gradle command
Creating a Gradle project file
Creating our Hello World code
Using IntelliJ IDEA or Android Studio
Importing Gradle files with IntelliJ IDEA
Basic Kotlin syntax
General features
Packages
String concatenation and interpolation
Comments
Control structures
if expression
when expression
for loop
while and do loops
Going further
Other Books You May Enjoy
Leave a review - let other readers know what you think
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜