gpt4 book ai didi

android - 如何在 Kotlin 中为 Context 制作有关 getInteger 的扩展函数?

转载 作者:行者123 更新时间:2023-12-02 12:30:07 25 4
gpt4 key购买 nike

我是Kotlin的初学者,代码A从资源文件中获取一个int值。

我希望使用扩展函数来完成此操作,并像 this.getInteger(R.integer.ActivityEditBackup) 一样调用它

但是我编写的代码B不正确,我该如何修复它?

代码A

mContext.resources.getInteger(R.integer.ActivityEditBackup)) 

代码B

inline fun <reified T : Activity>Context.getInteger(int id): int {
return T.resources.getInteger(id)
}

最佳答案

你把事情想得太复杂了一点。

  • 您不会以任何方式使用特定类型的Context,也不需要使您的扩展程序通用。
  • 在参数列表中,参数名称在前,类型在后。
  • Kotlin 中整数类型的名称是 Int,大写的 I
  • 您可以使用 this 引用扩展函数内的Context
  • 您可以使用支持注释来指定您的参数始终为整数资源 ID。

总体而言,经过这些更改:

inline fun Context.getInteger(@IntegerRes id: Int): Int {
return this.resources.getInteger(id)
}

还有一些关于语法的普遍混淆,您应该查看 functions 的文档然后extensions .

<小时/>

此外,您可以将函数转换为表达式主体并省略显式 this:

inline fun Context.getInteger(@IntegerRes id: Int) = resources.getInteger(id)

关于android - 如何在 Kotlin 中为 Context 制作有关 getInteger 的扩展函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49606765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com