这期内容当中小编将会给大家带来有关如何定义与声明Scala函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
语法: Dcl ::= „def‟ FunDcl FunDcl ::= FunSig : Type Def ::= „def‟ FunDef FunDef ::= FunSig [„:‟ Type] „=‟ Expr FunSig ::= id [FunTypeParamClause] ParamClauses FunTypeParamClause ::= „[‟ TypeParam {„,‟ TypeParam} „]‟ ParamClauses ::= {ParamClauses} [[nl] „(‟ „implicit‟ Params „)‟] ParamClause ::= [nl] „(‟ [Params] „)‟} Params ::= Param {„,‟ Param} Param ::= {Annotation} id [„:‟ ParamType] ParamType ::= Type | „=>‟ Type | Type „*‟ 函数声明具有这样的形式:def f psig: T,f是函数的名称,psig是参数签名,T是返回类型。函数定义def f psig: T = e还包括了函数体e,例如一个表达式定义了函数的结果。参数签名由一个可选的类型参数子句[tps],后跟零个或多个值参数子句(ps1)…(psn)构成。这样的声明或定义引入了一个值,该值具有一个(可能是多态的)方法类型,其参数类型与返回类型已给出。 已给出的函数体的类型被期望与函数声明的返回类型一致。如果函数定义不是递归的,那么返回类型则可省略,因为其可由函数体打包的类型推断出来。 类型参数子句tps由一个或多个类型声明构成,在其中引入了可能具有边界的类型参数。类型参数的域包括整个签名,也包括任何类型参数边界以及函数体(如果有的话)。 值参数子句ps由零个或多个规范类型绑定(如x: T)构成,这些类型绑定绑定了值参数以及将它们与它们的类型联系起来。一个规范值参数命名x的范围是函数体(如果有的话)。所有的类型参数名及值参数名必须两两不同。 |
上述就是小编为大家分享的如何定义与声明Scala函数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。