scala – 需要帮助了解此代码中 – >,{}和()的用法
以下是有问题的代码:
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结构互换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |