小编Ily*_*lya的帖子

NLog LogManager.GetLogger(String,Type)重载的目的是什么

LogManagerclass有两种方法:GetLoggerGetCurrentClassLogger,带有重载参数Type loggerType

public static Logger GetLogger(string name, Type loggerType)
public static Logger GetCurrentClassLogger(Type loggerType)
Run Code Online (Sandbox Code Playgroud)

文档说明loggerType'要创建的记录器的类型.该类型必须从NLog.Logger继承.

这种超载的目的是什么?为什么我需要创建继承类型的记录器?

c# nlog

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

Kotlin:我如何将谓词传递给CharSequence.any()函数?

我正试图找出一个角色是否属于一个字符串.

var s = "abcdef"
var result = s.any('d')
Run Code Online (Sandbox Code Playgroud)

但我无法理解这种语法.来自docs:

fun CharSequence.any(predicate: (Char) -> Boolean): Boolean 
Run Code Online (Sandbox Code Playgroud)

如何将谓词传递给函数?

kotlin

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

Kotlin:'Int'类型的表达式'长度'不能作为函数调用.找不到函数'invoke()'

我正在尝试解决一个旧的kotlin项目中的问题.但问题是我无法编译代码.我尝试在Android Studio和IntelliJ中编译和运行.我有同样的错误.

以下是错误:

Error:(174, 25) Expression 'length' of type 'Int' cannot be invoked as a function. The function 'invoke()' is not found

Error:(176, 60) Unresolved reference: charAt

Error:(148, 67) Expression 'size' of type 'Int' cannot be invoked as a function. The function 'invoke()' is not found

Error:(107, 76) Expression 'ordinal' of type 'Int' cannot be invoked as a function. The function 'invoke()' is not found
Run Code Online (Sandbox Code Playgroud)

我的gradle脚本:

buildscript {
ext.kotlin_version = '1.0.4'

repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'
    classpath …
Run Code Online (Sandbox Code Playgroud)

kotlin

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

如何在maven 3.5控制台输出中自定义颜色

Maven 3.5.0在控制台输出中引入了着色.

这是一个很酷的功能,但我不喜欢一些默认的颜色选择,例如密集的蓝色INFO看起来太分散注意力.

有可能以某种方式定制颜色吗?

console maven

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

将Period添加到startDate不会产生endDate

我有两个LocalDate声明如下:

val startDate = LocalDate.of(2019, 10, 31)  // 2019-10-31
val endDate = LocalDate.of(2019, 9, 30)     // 2019-09-30
Run Code Online (Sandbox Code Playgroud)

然后我使用Period.between函数计算它们之间的周期:

val period = Period.between(startDate, endDate) // P-1M-1D
Run Code Online (Sandbox Code Playgroud)

此处的期间为负数的月份和天数,如果endDate早于,则可以预期startDate

但是,当我将其添加period回时startDate,得到的结果不是endDate,而是前一天的日期:

val endDate1 = startDate.plus(period)  // 2019-09-29
Run Code Online (Sandbox Code Playgroud)

所以问题是,为什么不不变

startDate.plus(Period.between(startDate, endDate)) == endDate

保留这两个日期?

Period.between谁返回了不正确的期限,还是LocalDate.plus谁添加了不正确的期限?

period date-difference kotlin java-time localdate

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

默认参数vs重载,何时使用哪个

在Kotlin中,有两种表达可选参数的方法,可以通过指定默认参数值:

fun foo(parameter: Any, option: Boolean = false) { ... }
Run Code Online (Sandbox Code Playgroud)

或引入过载:

fun foo(parameter: Any) = foo(parameter, false)
fun foo(parameter: Any, option: Boolean) { ... }
Run Code Online (Sandbox Code Playgroud)

在哪种情况下首选哪种方式?

这种功能的消费者有什么区别?

overloading optional-parameters kotlin

7
推荐指数
2
解决办法
1010
查看次数

Kotlin数据类和可空类型

我是Kotlin的新手,我不知道为什么编译器会抱怨这段代码:

data class Test(var data : String = "data")

fun test(){
  var test: Test? = Test("")
  var size = test?.data.length
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨test?.data.length,它说我应该这样做:test?.data?.length.但数据变量String不是String?,所以我不明白为什么我要把它放在?我想检查长度的时候.

android kotlin data-class

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

为什么kotlin不允许协变mutablemap成为委托?

我是Kotlin的新手.当我在地图中学习存储属性时.我尝试以下用法.

class User(val map: MutableMap<String, String>) {
    val name: String by map
}
Run Code Online (Sandbox Code Playgroud)

class User(val map: MutableMap<String, in String>) {
    val name: String by map
}
Run Code Online (Sandbox Code Playgroud)

class User(val map: MutableMap<String, out String>) {
    val name: String by map
}
Run Code Online (Sandbox Code Playgroud)

前两个都是工作,最后一个都失败了.使用out修饰符,字节码getName如下:

  public final java.lang.String getName();
     0  aload_0 [this]
     1  getfield kotl.User.name$delegate : java.util.Map [11]
     4  astore_1
     5  aload_0 [this]
     6  astore_2
     7  getstatic kotl.User.$$delegatedProperties : kotlin.reflect.KProperty[] [15]
    10  iconst_0
    11  aaload
    12  astore_3 …
Run Code Online (Sandbox Code Playgroud)

delegates jvm generic-variance kotlin

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

在IntelliJ IDEA项目中使用kotlinx.coroutines

我正在尝试学习协同程序,因此我启动IntelliJ并创建一个临时文件.但是当我输入我的协同程序时,我得到编译器投诉,例如runBlocking未解决的引用.所以这不是一个Android项目或任何这样的事情.只是基本Kotlin项目中的临时文件.

如何引入协同程序,以便我不再收到错误?

coroutine kotlin kotlinx.coroutines

7
推荐指数
2
解决办法
3201
查看次数

如何:在 Kotlin 中触发和忘记异步协程

我一直在阅读 Kotlin 协同程序,但没有找到特定问题的答案。

假设我想迭代一个集合,为每个元素进行 API 调用(在这种特殊情况下,将文件推送到 Amazon S3)。我希望这些调用由异步协程处理,以免在等待时阻塞底层线程。

我不需要请求的返回值,只需要记录异常。

我将如何创建一个“即发即忘”的异步协程来发出这些请求之一?

asynchronous coroutine kotlin

6
推荐指数
2
解决办法
3907
查看次数