consumer.key, "oauth_signatur-6ren">
gpt4 book ai didi

scala - 需要帮助了解此代码中 ->、{} 和 () 的用法

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

这是有问题的代码:

val oauth_params = IMap(
"oauth_consumer_key" -> consumer.key,
"oauth_signature_method" -> "HMAC-SHA1",
"oauth_timestamp" -> (System.currentTimeMillis / 1000).toString,
"oauth_nonce" -> System.nanoTime.toString
) ++ token.map { "oauth_token" -> _.value } ++
verifier.map { "oauth_verifier" -> _ }

问题一:启用了哪些 Scala 功能 "oauth_consumer_key" -> consumer.key存在并作为参数传递?

问题二:看到 val oauth_params = IMap(...)token.map {...} , 哪些操作使用 {}用于传递值而不是通常的 () ?有具体的规定吗?为什么是 for循环允许同时使用两者,如果这是一个相关问题?

当我看到其他地方使用的功能时,我在这里问。我也相信这两个问题是相关的。

最佳答案

为了:
->Predef.scala 中定义,在编译期间导入到任何其他 Scala 源中:

final class ArrowAssoc[A](val x: A) {
@inline def -> [B](y: B): Tuple2[A, B] = Tuple2(x, y)
def →[B](y: B): Tuple2[A, B] = ->(y)
}
implicit def any2ArrowAssoc[A](x: A): ArrowAssoc[A] = new ArrowAssoc(x)

如您所见,有一个隐式转换将任何对象转换为 ArrowAssoc[A],它有一个方法 ->[B],它返回一个 Tuple2[A,B]。

IMap(...) 它是对方法 IMap.apply(...) 的调用:在 Scala 中,如果方法名为 apply,则可以省略它。在这种情况下,它在 Scala 中以一种非常常见的模式用作工厂方法
class MyClass(....) {

}
object MyClass{
def apply(....): MyClass = new MyClass(....)
}

val a = MyClass(a,b,c)

您刚刚看到的是一个 Scala 类及其伴随对象:一个必须在与该类相同的源文件中定义的单例,并且它还可以访问该类本身中的私有(private)和 protected 字段

map 函数接收一个函数,该函数采用相同类型的集合并返回不同类型。示例: List(1,2,3).map ( x => x * 2) . ( ) 和 { } 在 Scala 中可以互换,除了 case 构造。

关于scala - 需要帮助了解此代码中 ->、{} 和 () 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414347/

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