Skip to Content
Kotlin 编程实践
book

Kotlin 编程实践

by Ken Kousen
July 2020
Intermediate to advanced
235 pages
3h 37m
Chinese
China Machine Press
Content preview from Kotlin 编程实践
126
7
可以通过多种方式来组织此测试,但是使用这种方式也意味着该代码的重点是运行测
试,而且还要打印站点。注意,使用作用域函数会将整个测试转换为单个表达式,从而
允许使用较短的语法。
在测试中also 函数的调用位于 run 函数的前面,因为 run 函数返回
lambda 表达式的返回值而不是上下文对象。
顺便说一句,尽管可以使用 apply 函数代替 run 函数,但是应该假设 JUnit 测试返回
Unit。示例 7-5 中的 run 调用做到了这一点(因为断言不返回任何内容),而 apply
则会返回上下文对象。
参阅
7.1 节讨论了 apply 函数。
7.3
使用
let
函数与
Elvis
问题
如何仅在非空引用上执行代码块,否则返回默认值?
解决方案
let 作用域函数进行安全调用,并结合 Elvis 操作符。
讨论
let 函数是任意泛型 T 上的扩展函数,它在标准库中的实现参见示例 7-6
示例 7-6:标准库中的 let 函数的实现
public inline fun <T, R> T.let(
block: (T) -> R
): R
有关 let 的一个需要谨记的关键事实是,它返回 block 的结果而不是上下文对象。因此
它就像一个上下文对象的转换器,这有点像对象的映射。假设你需要获取一个字符串并
将其内容转为大写,但是需要对空字符串进行特别处理,参见示例 7-7
作用域函数
127
示例 7-7:将字符串内容转为大写并处理特殊情况
fun processString(str: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

GraphQL 学习指南

GraphQL 学习指南

Eve Porcello, Alex Banks
Java 技术手册(原书第7版)

Java 技术手册(原书第7版)

Benjamin J. Evans, David Flanagan
Python机器学习基础教程

Python机器学习基础教程

Andreas C. Müller, Sarah Guido

Publisher Resources

ISBN: 9787111659624