加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:57:23 所属栏目:安全 来源:网络整理
导读:以下是有问题的代码: 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
以下是有问题的代码:

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" -> _ }

问题1:启用了哪些Scala功能“oauth_consumer_key” – > consumer.key存在并作为参数传递?

问题2:看到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类及其伴随对象:一个单例,它必须在与该类相同的源文件中定义,并且还可以访问类本身中的私有和受保护字段

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读