Kotlin 显式与隐式 get() 和 set()

2024-01-04

我们使用或明确使用的原因是什么get() and set()在科特林?我有一个模型,当我删除显式时,该模型会抛出错误get()在其变量声明中。

data class SampleDomain(
    val publishTime: String = ""
) {

    // Removing get() here, publishTime becomes empty
    val formattedDate: String
        get() = LocalDate.parse(publishTime, DateTimeFormatter.ISO_OFFSET_DATE_TIME).format(
            DateTimeFormatter.ofPattern("MMM. dd, yyyy")
        )

}

get() and set()这就是我们在 Kotlin 中定义 getter 和 setter 的方式。所以简单地回答我们为什么使用它们是因为它们需要定义一个 getter/setter。

如果您指的是以下定义之间的区别:

val formattedDate: String = acquireDate()
val formattedDate: String get() = acquireDate()

Then get()在这里不仅仅是为了更明确。这两个代码片段做了很多不同的事情。第一个在对象初始化期间获取日期,将其存储在字段中,然后 getter 返回该存储的值。第二个定义了一个自定义 getter,但该值不存储在任何地方 - 每次调用 getter 时都会一次又一次地获取日期。

请参阅文档以获取更多信息:https://kotlinlang.org/docs/properties.html#getters-and-setters https://kotlinlang.org/docs/properties.html#getters-and-setters

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

Kotlin 显式与隐式 get() 和 set() 的相关文章

随机推荐

  • 在 React Native 中导入图形工具包会导致错误 500

    我正在使用最新版本的Expo 我创建了一个项目expo init my project并添加了React Native 图表套件 https github com indiespirit react native chart kit 这是p
  • 使用 Knockout-ES5 时如何访问自定义绑定中的可观察量

    如果模型属性是 ko observable 则可以在自定义绑定中按如下方式访问这些属性 var observable valueAccessor 使用 Knockout ES5 插件时 如何在自定义绑定中获取可观察值 检查下面的代码并查找注
  • 简单的 Flask 应用服务器使用 ajax 和 jquery 传递数据

    我花了一整天的时间修补这个应用程序 试图将一些简单的信息传递到应用程序的后端 我正在使用一个简单的 Flask 应用程序 并尝试使用 ajax 将数据从搜索查询发送到后端 然而 我却完全没有成功 任何帮助将不胜感激 下面是app py fr
  • 使用 ClrMD 加载转储文件时出现“加载 DAC 失败:CreateDacInstance 失败”

    我正在尝试微软的新库 ClrMD https nuget org packages Microsoft Diagnostics Runtime 分析故障转储和实时进程 我已遵循 NET Framework 中的示例博客文章 http blo
  • Homebrew:木桶“java”定义无效

    我最近更新木桶时开始收到以下错误 Error Cask java definition is invalid Token v1 gt java in header line does not match the file name 我使用的
  • 将字符串加密和解密为固定长度

    我研究了很多例子并尝试了几篇文章 但他们都没有解决我的问题 我想加密数据库中的主列值 整数值 并将其显示在 URL 中 我希望我的 URL 简单易读 因此我不需要冗长的加密值 大多数情况下 我会查看 5 到 7 个字符的长度 这可能吗 如果
  • 如何在 Inno Setup 中用零填充 OutputBaseFilename 的版本组件

    我有 Inno Setup 6 1 2 安装脚本 其中版本main sub batch是这样形成的 define AppVerText GetVersionComponents app bin Release app exe Local 0
  • grunt-contrib-uglify v5.0.0 仍然无法支持 ES6 模板文字?

    更新 2012 年 1 月 9 日 起初 我认为这是由于模板文字中的单引号造成的 replyTo MTN Support lt functions config supportgmail email gt 但现在 已经证实即使是普通的模板文
  • 无法打开prover9/Mace4

    我使用一个代码 并在其中尝试使用 Prover9 但由于某种原因 这个问题不断弹出 我下载了这两个应用程序 但我不知道将它们放在哪里才能打开它 NLTK 无法找到 mace4 文件 使用软件特定的配置参数或设置 PROVER9 环境变量 搜
  • 从 Gradle 输出中删除隐式依赖警告

    我的 Gradle 构建中有一个通用任务 它复制一些配置文件以包含在构建中 但编译或其他任何操作都不需要这些文件 它们在运行时使用 基本上 val copyConfiguration by tasks registering Copy cl
  • 在检查点 Tensorflow 中找不到键

    我正在使用 Tensorflow v1 1 并且一直在尝试找出如何使用 EMA 权重进行推理 但无论我做什么 我都会不断收到错误 未找到 在检查点中未找到 W ExponentialMovingAverage 键 即使当我循环并打印出所有t
  • 熊猫显示的百分位错误吗?

    我正在使用这个 WNBA 数据集here https www kaggle com jinxbe wnba player stats 2017 我正在分析Height变量 下表显示了记录的每个高度值的频率 累积百分比和累积频率 从表中我可以
  • 完成块?嵌入同步工作流中的异步流程

    潜伏已久 第一次发海报 我对 Objective C 比较陌生 所以如果我问的问题相当简单 我很抱歉 我的谷歌和堆栈溢出让我失望了 所以我想有人可以提供帮助 我有一个同步进程 比如说 连续执行三个函数 称之为 A gt B gt C 其中执
  • 从第三方 DLL 调用 Qt 中的函数在调试模式下工作,在发布模式下崩溃

    我使用第三方 DLL FTD2xx 与外部设备通信 使用 Qt4 在调试模式下一切正常 但在成功完成被调用函数后 发布会无声地崩溃 它似乎在返回时崩溃 但是如果我在函数末尾向控制台 使用 qDebug 写入一些内容 有时它不会在那里崩溃 而
  • Perl 单行代码仅保留所需的行

    我有一个像这样的文本文件 input txt NP 414685 4 15 26 131 138 441 465 NP 418580 2 493 500 NP 418780 2 36 48 44 66 NP 418345 2 NP 4184
  • 如何减轻 Intel jcc 勘误表对 gcc 的影响?

    如果我有一个芯片受英特尔 jcc 勘误表 https stackoverflow com questions 61016077 32 byte aligned routine does not fit the uops cache 6101
  • 三个点是否包含多个含义?

    据我所知 表示下面代码片段中数组的长度 var days string Sun Mon Tue Wed Thu Fri Sat 另一方面 表示解包切片y正如我猜测的 下面代码片段中 int 的参数 我对此不太确定 x int 1 2 3 y
  • git p4克隆没有文件

    我正在从 Perforce 迁移到 git 在此过程中我试图使文件结构正确 当前的 perforce 结构是这样的 depot android main other branches core library main other bran
  • 如何仅在满足多个子句时返回一行

    我正在开发一个分配液体的应用程序 这是数据库的组织结构 罐 canister id PK 成分 id FK 成分 成分 ID PK 成分名称 DRINK Drink id PK 饮料名称 成分实例 实例 ID PK 饮料 id FK 成分
  • Kotlin 显式与隐式 get() 和 set()

    我们使用或明确使用的原因是什么get and set 在科特林 我有一个模型 当我删除显式时 该模型会抛出错误get 在其变量声明中 data class SampleDomain val publishTime String Removi