相关疑难解决方法(0)

除了XHTML自包含标记之外,RegEx匹配开放标记

我需要匹配所有这些开始标记:

<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)

但不是这些:

<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)

我想出了这个,并希望确保我做对了.我只抓住了a-z.

<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)

我相信它说:

  • 找一个小于,然后
  • 然后,查找(并捕获)az一次或多次
  • 然后找到零个或多个空格
  • 找到任何字符零次或多次,贪婪/,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

html regex xhtml

1323
推荐指数
36
解决办法
270万
查看次数

什么时候应该更喜欢Kotlin扩展功能?

在Kotlin中,具有至少一个参数的函数可以定义为常规非成员函数,也可以定义为扩展函数,其中一个参数是接收者.

对于范围界定,似乎没有区别:两者都可以在类和其他函数内部或外部声明,并且两者都可以或不可以具有相同的可见性修饰符.

语言参考似乎不建议在不同情况下使用常规函数或扩展函数.

所以,我的问题是:扩展功能何时优于常规非成员功能?当常规的扩展?

foo.bar(baz, baq)VS bar(foo, baz, baq).

它只是一个函数语义的提示(接收器肯定是焦点)或是否有使用扩展函数使代码更清洁/开辟机会的情况?

code-structure kotlin

52
推荐指数
3
解决办法
4238
查看次数

与T.()的Kotlin函数签名是什么意思?

这是标准的Kotlin功能(据我所知)

inline fun<T> with(t: T, body: T.() -> Unit) { t.body() }
Run Code Online (Sandbox Code Playgroud)

但是,任何人都可以用简单的英文写下签名的意思吗?它是T的通用函数,第一个参数"t"表示类型T,第二个参数是函数类型的"body",接受函数???? 没有返回(单位)

我看到这个符号Something.() - >有些东西经常使用,即对于Anko:

inline fun Activity.coordinatorLayout(init: CoordinatorLayout.() -> Unit) = ankoView({ CoordinatorLayout(it) },init)
Run Code Online (Sandbox Code Playgroud)

但我不认为它在任何地方被解释了.()意味着......

kotlin

28
推荐指数
2
解决办法
4560
查看次数

Kotlin中"with"的意思是什么?

我已经阅读了3次文档,但我仍然不知道它的作用.有人可以ELI5(解释就像我五岁)吗?这是我使用它的方式:

fun main(args: Array<String>) {
    val UserModel = UserModel()
    val app = Javalin.create().port(7000).start()

    with (app) {
        get("/users") {
            context -> context.json(UserModel)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin

17
推荐指数
3
解决办法
1662
查看次数

Kotlin:IT 和 THIS 关键字之间的区别

在一次 kotlin 采访中,有人问我it&this关键字之间的区别。

我在谷歌上搜索过,但无法找到问题的正确答案。

有人可以指导我这两者之间的实际区别是什么?

我知道这是非常基本的问题,我是 kotlin 的新手。

android kotlin

16
推荐指数
3
解决办法
5293
查看次数

如何在 Android Jetpack Compose 中将 Dp 转换为像素?

大多数 Jetpack Compose API 使用Dp作为尺寸单位,但有时需要像素值。如何将 dp 值转换为 px?举个例子,graphicsLayer()修饰符接受translationX/Y以像素为单位的参数。

android android-jetpack android-jetpack-compose

10
推荐指数
2
解决办法
2985
查看次数

什么<ClassName>.()在Kotlin中意味着什么?

不知道这意味着什么,但我在kotlin html代码库中遇到了这种语法.SCRIPT.()是什么意思?

https://github.com/Kotlin/kotlinx.html/blob/master/shared/src/main/kotlin/generated/gen-tag-unions.kt#L143

fun FlowOrPhrasingOrMetaDataContent.script(type : String? = null, src : String? = null, block : SCRIPT.() -> Unit = {}) : Unit = SCRIPT(attributesMapOf("type", type,"src", src), consumer).visit(block)
Run Code Online (Sandbox Code Playgroud)

SCRIPT是一个类 - https://github.com/Kotlin/kotlinx.html/blob/master/shared/src/main/kotlin/generated/gen-tags-s.kt.

或者更一般地说,<ClassName>.()Kotlin的意思是什么?

kotlin

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

测试类内的扩展函数

如果我们想在类型上测试扩展函数,我们可以创建这种类型的实例,调用函数并检查返回的值.但是如何测试类中定义的扩展函数呢?

abstract class AbstractClass<T> {
    fun doStuff(): T = "Hello".foo()

    abstract fun String.foo(): T
}

class SubClass1: AbstractClass<Int>() {
    override fun String.foo(): Int = 1
}

class SubClass2: AbstractClass<Boolean>() {
    override fun String.foo(): Boolean = true
}
Run Code Online (Sandbox Code Playgroud)

我们如何测试方法的逻辑foo()中类SubClass1SubClass2?它甚至可能吗?

我知道我可以改变设计来测试它.我有两种可能性:

  1. 不要使用扩展功能.¯\ _(ツ)_ /¯

    abstract class AbstractClass<T> {
        fun doStuff(): T = foo("Hello")
    
        abstract fun foo(string: String): T
    }
    
    class SubClass1: AbstractClass<Int>() {
        override fun foo(string: String): Int = 1
    }
    
    Run Code Online (Sandbox Code Playgroud)

    然后我们可以创建一个对象SubClass1,调用foo()并检查返回的值. …

unit-testing kotlin extension-function kotlin-extension

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

功能接收器和扩展功能之间的区别

我正在读关于Kotlin的内容并没有完全理解

从我理解的扩展函数赋予具有新功能的类的能力,而不必从类继承

什么是接收器相同,除了它可以分配给变量

还有别的吗?

有人可以提供一些例子

kotlin

3
推荐指数
2
解决办法
842
查看次数

什么时候我应该使用let {}和什么时候只是普通!= null

你会如何以更科学的方式编写以下代码?

var returnValue = ...
val s3data = presignedUrl.body()
if (s3data != null) {
    val uploadImage = api.uploadImage(s3data.bucketUrl, s3data.awsAccessKeyId, s3data.policy, s3data.key, s3data.signature, body).execute()
    if (!uploadImage.isSuccessful) {
        crashReporterService.sendIssue("Failed uploading file", "Failed uploading file ${uploadImage.raw()}")
        returnValue = Result.FAILURE
    } else {
        returnValue = Result.SUCCESS
    }
} else {
    crashReporterService.sendIssue("Failed uploading image", "Error - ${presignedUrl.raw()}")
    returnValue = Result.FAILURE
}

return returnValue
Run Code Online (Sandbox Code Playgroud)

我可以使用let,但我觉得它使代码更难理解

kotlin kotlin-null-safety

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