gpt4 book ai didi

Scala 和 SLF4J::传递多个参数

转载 作者:行者123 更新时间:2023-12-04 12:23:12 34 4
gpt4 key购买 nike

具有以下代码:
log.info("参数 {} 和 {}", param1, param2)
在 Scala 中编译并与 SLF4J 很好地配合使用

但是,如果我想传递更多参数,我需要使用 Array:

log.info("parameters {} and {} and {}", Array(param1, param2,param3)) 

它只是用 array.toString 替换第一个参数,其余参数未绑定(bind)。

以下代码
log.info("parameters {} and {} and {}", Array(param1, param2,param3) : _*) 

不编译,因为:
error: overloaded method value info with alternatives:
(org.slf4j.Marker,java.lang.String)Unit <and>
(java.lang.String,java.lang.Throwable)Unit <and>
(java.lang.String,Array[java.lang.Object])Unit <and>
(java.lang.String,Any)Unit
cannot be applied to (java.lang.String, Any)
log.info("parameters {} and {} and {}", Array(param1, param2,param3) : _*)

我在这里想念什么?

最佳答案

我想这一切都取决于推断的类型。采用数组的 log.info 方法需要一个 Array[AnyRef]。所以作为 Actor 的替代品,你可以做

log.info("parameters {} and {} and {}", Array[AnyRef](1, 2, "a"): _*)

但这不起作用,因为 Int -> AnyRef 之间的隐式转换存在限制。对于那些,你需要一个类型归属:
log.info("parameters {} and {} and {}", 
Array[AnyRef](1: Integer, 2: Integer, "a"): _*)

有关详细信息,请参阅此问题: Result type of an implicit conversion must be more specific than AnyRef

关于Scala 和 SLF4J::传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11940614/

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