scala – object.type不接受参数错误
发布时间:2020-12-16 09:58:00 所属栏目:安全 来源:网络整理
导读:以下是我在使用 scala book时使用的代码片段.它在框架中运行良好,但是当我尝试在commndline中它会给出错误 error: Product.type does not take parameters var products = Set(Product(5018206244611L,"Tom","Zebra")) 以下是我使用的代码 case class Produc
以下是我在使用
scala book时使用的代码片段.它在框架中运行良好,但是当我尝试在commndline中它会给出错误
error: Product.type does not take parameters var products = Set(Product(5018206244611L,"Tom","Zebra")) 以下是我使用的代码 case class Product(ean: Long,name: String,description: String) object Product { var products = Set(Product(5018206244611L,"Zebra")) def findAll = products.toList.sortBy(_.ean) } 在其中一个控制器文件教程中使用Product.apply和Product.unapply. Product.apply和Product.unapply在未在对象内定义时指示什么,并在我在控制台中键入时给出错误. FOllowing是使用Product.apply和Product.unapply的代码 private val productForm: Form[Product] = Form( mapping( "ean" -> longNumber.verifying( "validation.ean.duplicate",Product.findByEan(_).isEmpty),"name" -> nonEmptyText,"description" -> nonEmptyText)(Product.apply)(Product.unapply) ) 解决方法
与“普通”编译相比,Scala REPL(命令行)有一些差异.除了无法定义包之外,另一个主要的是它逐行执行语句.
上面的意思是,在Scala REPL中,你没有用你的第二个代码块创建一个带有伴随对象的类;相反,您创建了Product case类,然后使用新的Product模块“遮蔽”它. 解决方案是在REPL中使用:paste命令,以便您同时输入两个定义. 关于你的第二个问题 – apply是一个应用程序方法(你用foo调用的函数(…) – 例如所有的FunctionN实例都有它),unapply是an extractor method(用于模式匹配 – case类获取它为“free”) . (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |