在 Kotlin 中,这个 get() 做了什么

2023-12-22

我对 Kotlin 很陌生,想知道get() = login_email.txt.toString() do?

是否设定email String?


get() and set(value)字段后面表示自定义 getter 和/或 setter 的声明。这是使用默认值的基本示例:

class Demo{
    var something: String
        get() = field
        set(value) {
            field = value;
        }
    constructor(something: String){
        this.something = something;
    }
}

然而,这两个是多余的。除非你用它来做一些定制的事情,否则你实际上并不需要它们。它们会自动为 vars 添加,尽管这只适用于 gettervals (因为它们无法更改,所以它们没有设置器)。

您询问的行是自定义吸气剂。

get() // declares a custom getter
    = // if you don't know how this works, see my explanation below
    login_email.text.toString() // you should be familiar with this part already; gets the string value of the field

如果您不熟悉语法,这相当于没有=:

get(){
    return login_email.text.toString()
} 

如果只有一个 return,则可以将括号和 return 关键字替换为=。如果它可以帮助您记住,只需记住使用的替代方法=(身体+return关键词)

TL;DR:它声明了一个返回 TextView/EditText 值的自定义设置器(不确定它是什么,您没有将其包含在问题中)


在您的情况下,您使用自定义 getter 或 setter 来处理属性数据。这些字段本身实际上并不包含任何数据,但您有不同对象的 getter。

以此为例:

class Demo(private val someObject: MyCustomObjectWithSomeData){
    val text: String
        get() = someObject.text
    ... same for other stuff. Could also have setters, if the properties are mutable
}

这里的对象是私有的,但它可以是公共的或内部的。

Kotlin 支持很多自定义 getter。例如,您可以声明一个字段来显示私有变量的特定字段。例如,就您而言,您有电子邮件。它不需要是变量,因为您有一个自定义 getter,并且该字段未初始化。如果你改变var email to a val,您可以将其设置为非空:

val email: String
    get() = login_email.text.toString()

这也有助于空安全。

而对于error领域,稍微复杂一些。它不可能是一个val因为你声明了一个自定义的setter,但是如果你添加一个getter,你可以将其设置为非空:

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

在 Kotlin 中,这个 get() 做了什么 的相关文章

随机推荐

  • mv 等效 rsync 命令 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试将文件夹移动到另一个文件夹使用命令行 如果已经存在则覆盖 但在使用 mv 时出现错误 是目录 example mv src test des
  • 标识符指的是组件的私有成员

    html
  • TCP 连接的可靠性如何?

    我已经编写了服务器 客户端应用程序 服务器是用c 编写的 客户端代码是使用java编写的 通信协议是TCP 使用 tcp 传输文件时 可能会发送丢失的数据 换句话说 tcp 是否保证数据正确到达 我是否应该发送该文件的标头信息以检查错误 例
  • Django:如何对更新视图/表单进行单元测试

    我正在尝试对我的更新表单和视图进行单元测试 我使用 Django Crispy Forms 来创建和更新表单 UpdateForm 继承了 CreateForm 并对提交按钮文本做了一些小改动 CreateView 和UpdateView
  • PHP:启动 PayPal 结帐的简单方法?

    我有功能齐全的购物车解决方案 我想要的只是我实际传递产品名称 总数 退货地址和我的贝宝地址的代码 以便它可以将我引导到购物车 有人能引导我走向正确的方向吗 PayPal 有上百万个不同的版本 我了解到我需要的是 paypal 网站付款 有人
  • TCP流回放工具

    我正在寻找一种用于记录和重放 TCP 流一侧以进行测试的工具 我看到记录整个 TCP 流 服务器和客户端 用于测试防火墙等的工具 但我正在寻找的是一种工具 它仅记录客户端提交的流量 带有计时信息 然后重新提交到服务器进行测试 由于 TCP
  • Django - Crispy Forms - 自定义输入定位和内联单选按钮

    我不久前一直在使用 django crispy forms 并我想知道是否有一种方法可以设置输入的位置 例如col md XX类或其他东西 使其看起来更好 而不仅仅是字段列表 这是一个例子 This is a normal render o
  • Neo4j 浏览器无法在 Google Chrome 中运行

    在 MacOS Yosemite 10 10 3 中升级到最新的 XCode Command Tools 后 无法使用 Chrome 版本 42 0 2311 90 64 位 作为 neo4j 浏览器客户端 不过 Safari 运行良好 有
  • 高效的纯文本模板引擎

    我有一个简单的警报系统 可以抓取网络上的号码 将它们与预定义的文本模板混合以获取警报 并将其发送给客户 警报是非常简单的纯文本 所以除了纯文本 数字 简单函数 例如 ifthenelse 之外 我不会期望太多 越快越好 那么有没有现成的开源
  • 使用 realloc 调整缓冲区大小

    如果指向的区域被移动 则会出现 free ptr 已完成 您能解释一下上面的内容吗realloc 此行来自 calloc malloc realloc 和 free 的手册页 我认为这更好地解释了这一点 如果没有足够的空间 扩展当前块 当前
  • 暂停NS操作

    I have NSOperationQueue和一些NSOperations in it NSInvocationOperations 尤其 此操作会进行一些计算并相应地更改 UI 元素的状态 当然 通过performSelectorOnM
  • 如何在我的用户名中使用带有 @ 符号的 linux 命令行 ftp? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我的用户名有一个时 如何在 Linux 命令行上运行它 中间签个字 ftp u user password host destinati
  • 这个生产者-消费者实现中是否存在竞争条件?

    在 操作系统概念 Silberschatz 第 9 版 的 3 4 1 节中 作者提出了生产者 消费者问题 并给出了以下使用循环缓冲区的实现 第 125 126 页 Shared variables define BUFFER SIZE 1
  • Rails 4从数据库填充下拉值

    我有一个 Rails 形式的下拉菜单 这工作正常 但我怎样才能使它动态 与模型数据交互 我有一个控制器 其操作包含 list List all 我怎样才能填充id and name in my combobox 我一直在四处寻找 但我不清楚
  • 从 PHP 匿名函数访问变量

    我有以下带有静态变量的类 如何从匿名 PHP 函数中访问类的静态函数 class MyClass public static function MyFunction mylocalparam MyStaticClass MyStaticMe
  • 如何修复“java.sql.SQLSyntaxErrorException:'字段列表'中的未知列'product0_.return_policy'”异常?

    当我尝试在浏览器上运行 URL 时 我收到此 SQLSyntaxErrorException 字段列表 中的未知列 product0 return policy GET一切products 看这里 https i stack imgur c
  • 反应按钮的 onClick 属性:

    1 和 2 有什么区别React onClick gt handleDelete id 1 onClick handleDelete id 2 为什么 2 会导致无限循环 而 1 却工作得很好 我找不到任何关于 React 中 onClic
  • 在 GlassFish 中将 JSF 输入提交值的请求字符编码设置为 UTF-8

    我的所有值中插入的值都有问题
  • ICS 上区分平板电脑和智能手机

    据我所知 默认情况下 ICS 之前 为了区分平板电脑和智能手机 开发人员可以使用 Android 清单中的 sdk 版本 除了屏幕尺寸和 openGL 过滤器 现在 随着 ICS 在 SP 和平板电脑上运行 如果我需要区分 SP 和平板电脑
  • 在 Kotlin 中,这个 get() 做了什么

    我对 Kotlin 很陌生 想知道get login email txt toString do 是否设定email String get and set value 字段后面表示自定义 getter 和 或 setter 的声明 这是使用