为什么在scala中的代码块之前给出了类名?
发布时间:2020-12-16 09:06:11 所属栏目:安全 来源:网络整理
导读:我是 scala的新手,经历了一些教程,我遇到过一个样本 object DataController extends SomeOtherController with Controller {... def testPage = SomeOtherAction { implicit requestHolder = val userInfo = requestHolder.user val paramMap = requestHolde
我是
scala的新手,经历了一些教程,我遇到过一个样本
object DataController extends SomeOtherController with Controller { ... def testPage = SomeOtherAction { implicit requestHolder => val userInfo = requestHolder.user val paramMap = requestHolder.params ..... } } here = sign表示将以下代码块分配给名为testPage的函数. 解决方法
SomeOtherAction实际上是一个对象,而不是一个类,并且必须有一个apply方法.这个“代码块”不仅仅是一个块,它是一个采用requestHolder类型的函数.所以,SomeOtherAction可能就是这样
object SomeOtherAction { //... def apply(r:RequestHolder => Unit) = { // do something r(someRequestHolder) } } 当Scala看到一个参数应用于一个对象时,它会寻求方法apply. 上面单位的使用仅仅是一种可能情景的说明. 最后一个难题是,对于任何方法,包括apply,参数表达式可以用括号括起来,或者(如果只有1个)可以是单个块表达式,即用括号{}限定.这在功能应用程序语法的语言规范的6.6节中有详细说明: SimpleExpr ::= SimpleExpr1 ArgumentExprs ArgumentExprs ::= ‘(’ [Exprs] ‘)’ | ‘(’ [Exprs ‘,’] PostfixExpr ‘:’ ‘_’ ‘*’ ’)’ | [nl] BlockExpr Exprs ::= Expr {‘,’ Expr} 例如def foo(x:Int)= x * 100可以通过foo(42)或foo {println(“yo”)调用; 42} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Bootstrap源码之旅-CSS环境搭建
- twitter-bootstrap – 当我使用bootstrap datepicker时,为什
- angularjs – 替代ng-show/-hide或者如何只加载DOM的相关部
- axis2 webservice 小例子
- twitter-bootstrap – Twitter Bootstrap模式阻止文本输入字
- 为什么以下scala代码有效?
- scala – 模糊的隐含值是我们想要在编译时存在错误的唯一方
- 快速解决因googleapis导致wordpress后台页面打开慢的问题
- .NET WebService 调试,允许通过IE输入参数的设置,允许Per
- SIGINT取消bash脚本中的读取?