小编Kav*_*eri的帖子

原始字符串,这些与转义字符串有何不同以及应该在哪里使用这些

根据我的研究,

Kotlin 有两种类型的字符串文字:-

可能包含转义字符的转义字符串

val s = "Hello ,World\n" +
    "from escaped string\n"+
    "kotlin"
Run Code Online (Sandbox Code Playgroud)

原始字符串由三重引号 (""") 分隔,不包含转义,可以包含换行符和任何其他字符:

val m = """Hello, World
       |from raw string
       |kotlin """.trimMargin()
Run Code Online (Sandbox Code Playgroud)

这些字符串可以在多行中使用,无需连接每一行,也无需转义。

我们使用原始字符串只是为了简单和容易实现,还是在任何情况下都提供更好的性能?

这些是我们应该考虑使用原始字符串的其他用例吗?

string performance android kotlin

9
推荐指数
2
解决办法
7526
查看次数

智能转换与 KOTLIN 中的显式转换有何不同

最近,我读到了有关运算符执行的智能强制转换的信息is,以及有关用于显式强制转换的as或更好的运算符的信息。as?

kotlin 文档将其用法差异分类如下:-

请注意,当编译器无法保证变量在检查和使用之间不会更改时,智能转换不起作用。更具体地说,智能转换根据以下规则适用:

  • val 局部变量 - 始终除了局部委托属性;

  • val 属性 - 如果属性是私有的或内部的,或者检查是在声明该属性的同一模块中执行的。智能转换不适用于开放属性或具有自定义 getter 的属性;

  • var 局部变量 -如果该变量在检查和使用之间未修改,则未在修改它的 lambda 中捕获,并且不是本地委托属性;

  • var 属性 - 从不(因为该变量可以随时被其他代码修改)。

请注意,当编译器无法保证变量在检查和使用之间不会更改时,智能转换不起作用。

上面写的有点令人困惑,因为var变量可以在初始化后更改,而且我找不到可以清楚说明该语句的实际含义的示例。

无论如何,任何人都可以更容易地更好地理解这一见解吗?

运营商是否is提供了一些优于as运营商的优化优势(如果有的话)?

optimization performance android casting kotlin

6
推荐指数
1
解决办法
2092
查看次数

如何在 Kotlin 中将 View 转换为 Imageview

fun tap(view: View) {

    val img = view
 }
Run Code Online (Sandbox Code Playgroud)

我希望这个变量 img 是一个图像视图,但不知道如何将视图转换为图像视图。

android casting view imageview kotlin

1
推荐指数
1
解决办法
1329
查看次数

标签 统计

android ×3

kotlin ×3

casting ×2

performance ×2

imageview ×1

optimization ×1

string ×1

view ×1