Kotlin 网站上的“返回 Unit 的方法的构建器风格用法”让我感到困惑

2024-03-25

The IdiomsKotlin 官方文档的部分包含这个例子 http://kotlinlang.org/docs/reference/idioms.html#builder-style-usage-of-methods-that-return-unit:

返回 Unit 的方法的构建器风格用法

fun arrayOfMinusOnes(size: Int): IntArray {
    return IntArray(size).apply { fill(-1) }
}

作为函数apply返回泛型类型,我想Unit是一样的void在Java中,本节建议我们可以在构建器风格中使用void方法?这对我来说没有意义——它想说什么?


它试图说明的一点是,如果您只是使用传统的 Java 构建器风格,如下所示:

return IntArray(size)
    .fill(-1)

那么它就不会编译,因为它是类型Unit, not IntArray。 所以传统上,你必须做这样的事情:

val ret = IntArray(size)
ret.fill(-1)
return ret

apply使您能够避免这种情况,因为返回类型仍然是类型IntArray (or T, 一般来说)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin 网站上的“返回 Unit 的方法的构建器风格用法”让我感到困惑 的相关文章

随机推荐

  • 完美处理动态实例化中的scala构造函数

    我已经整理了这个工作代码 可以从给定的动态实例化一个类name String 以下 这适用于简单的情况 类和具有一个构造函数的案例类 我不确定如何处理存在多个构造函数的一般情况 我认为它们只能通过它们的签名来区分 但发现伴生对象 类和案例类
  • 当测试的主机类型为“Moles”时,无法从配置文件访问信息

    当单元测试的主机类型为 Moles 时 我们在通过单元测试访问 net 配置文件 例如 app config 和 web config 中的信息时遇到问题 这引起了相当多的麻烦 所以我希望有人知道可以做什么 我们使用的是 Visual St
  • 获取大数据集的 JDBC ResultSet 内部机制

    JDBC 结果集是否在 SQL 查询的一次网络调用中获取所有数据 考虑查询select from table where timestamp gt 1597937895 现在该查询有超过 100 万行 结果集是否在一次网络调用中获取所有行
  • 在 SQL Server 查询中复制 MS Access“First”功能

    我对 SQL Server 非常陌生 所以我现在道歉 我有一张桌子 我想要 GroupByfield1并返回field2中具有最高关联计数的记录counted场地 我通常会在 MS ACCESS 中使用 2 个查询执行此操作 第一个查询按降
  • 如何模拟密钥库类并将模拟行为分配给其方法?

    我有以下方法 我需要为其编写单元测试 但我无法监视类 KeyStore 它抛出以下异常 org mockito exceptions base MockitoException Unable to create mock instance
  • VB.net Excel ExportAsFixedFormat 失败 HRESULT 异常:0x80010105 (RPC_E_SERVERFAULT))

    我正在尝试编写一个非常简单的 VB net 应用程序 它将打开一个 Excel 文件并将其另存为 Excel 我正在工作的环境如下 Windows 10 视觉工作室 2016 办公室2016 我已成功打开 Excel 工作表并将其保存到另一
  • 两个三角形或一组半平面的交集面积或凸点集的面积

    我需要计算 2D 平面中两个三角形之间重叠区域的面积 奇怪的是我已经写了code http github com victorliu Templated Numerics blob master AnalyticGeometry TInte
  • 仅为 UIView 的一部分设置背景颜色

    我希望 UIView 的底部 不完全是一半 的颜色与顶部不同 我想知道是否应该创建一个 CGRect 然后为其着色 这是在正确的轨道上吗 void drawRect CGRect rect CGRect aRect CGRectMake x
  • C++ 和 Fortran 混合链接问题

    我在网上做了一些搜索 但我找不到如何从 Linux 编译简单的 C 和 Fortran 代码 我需要让它变得复杂 但我只需要知道如何从一个简单的例子开始 我的C 代码是这样的 include
  • 为什么我的 .NET Standard NuGet 包会触发如此多的依赖项?

    我一直在闲逛 NET 标准项目 https github com tdwright contabs和 NuGet 我有一个工作项目并且有已将其上传到 NuGet org https www nuget org packages ConTab
  • 从 OSX lion 上的版本浏览器恢复不起作用...有什么想法吗?

    我正在尝试从 Lion 上的先前版本恢复基于文档的应用程序 当我选择 恢复版本 时 文本视图不反映更改 但是 如果我关闭应用程序并重新打开 更改就会出现 我正在使用 NSDocument 的文件包装器变体 那么如何使文本视图的文本存储反映立
  • Liquibase:如何禁用 FILENAME 列检查?

    对于我们的应用程序 我们使用 liquibase 我们需要从命令行 在生产中手动 运行数据库迁移 并在应用程序启动时自动运行数据库迁移 测试环境等 问题是 Liquibase 将整个文件名视为变更集身份的一部分 因此如果路径不同 它会尝试重
  • Java重载和继承规则

    我一直在学习 因为我有考试 而且我对 Java 的大部分内容都没有太多问题 但我偶然发现了一条我无法解释的规则 这是一个代码片段 public class A public int method Object o return 1 publ
  • 两个 Div 彼此相邻,然后堆叠响应式更改

    我正在努力实现一些我确信应该比我现在做的更容易的事情 我正在使用 Skeleton 响应式框架 到目前为止一切都很好 这是我想要实现的目标的图表 这将被放置在一列中 一旦该列的大小减小 我希望它按照图中的第二个示例堆叠 div 我尝试了几种
  • 从 tfs 构建中排除测试

    我想从持续集成构建中排除一些测试 但我还没有找到这样做的方法 我尝试过的事情之一是将这些测试的优先级设置为 2 然后在构建中我指定最低测试优先级 1 但它仍然运行这些测试 任何帮助将不胜感激 您应该使用 测试类别 方法 而不是使用已描述的
  • 如何永久清除在启用软删除的情况下创建的整个 azure keyvault?

    当您创建启用了软删除的 azure keyvault 时 即使您将其删除并从头开始重新创建 该 keyvault 仍会保留 启用软删除后 标记为已删除资源的资源将保留指定时间段 默认为 90 天 该服务还提供了一种恢复已删除对象的机制 本质
  • 如何将水平滚动视图移动到特定位置?

    我使用的scrollView没有任何listView或gridview 我刚刚向其中添加了相同的视图 但知道我想以编程方式滚动到特定位置 这可能吗 请帮助我使用水平滚动 你可以使用这个方法 horizontalScrollView scro
  • Angular Jasmine FormControl 单元测试 valueChanges

    我想对以下方法进行单元测试 this boxValue subscribeToFilterChanges void this filterBox valueChanges subscribe data gt if data this box
  • 加入 PIG 对阵 COGROUP

    当我在 pig 中使用 COGROUP 而不是 JOIN 时 有什么优势 性能 没有地图减少 吗 http developer yahoo com hadoop tutorial module6 html http developer ya
  • Kotlin 网站上的“返回 Unit 的方法的构建器风格用法”让我感到困惑

    The IdiomsKotlin 官方文档的部分包含这个例子 http kotlinlang org docs reference idioms html builder style usage of methods that return