Scala:我可以使用工厂方法重现匿名类创建吗?
发布时间:2020-12-16 08:47:46 所属栏目:安全 来源:网络整理
导读:据我所知,如果我使用new关键字创建一个类,并使用构造函数跟随类名,Scala会创建一个匿名类: class MyClass { def doStuff() { // ... }}val mc = new MyClass { doStuff()} 好处是构造函数中的所有代码都在新对象的范围内. 有没有办法可以重现这种语法,其中
据我所知,如果我使用new关键字创建一个类,并使用构造函数跟随类名,Scala会创建一个匿名类:
class MyClass { def doStuff() { // ... } } val mc = new MyClass { doStuff() } 好处是构造函数中的所有代码都在新对象的范围内. 有没有办法可以重现这种语法,其中类是由工厂方法而不是new关键字创建的?即使以下代码工作: val mf = new MyFactory val mc = mf.MyClass { doStuff() } 我找不到办法做到这一点,但Scala有很多东西,这可能很容易! 使用下面@Ricky建议的导入,我可以得到: val mf = MyFactory; val mc = mf.MyClass { import mc._ doStuff() } (需要块之前的空行)但该代码块不是构造函数. 解决方法
您可以这样做,但仍需要保留new关键字,并将嵌套类创建为路径依赖类型:
class Bippy(x: Int) { class Bop { def getIt = x } } val bip = new Bippy(7) val bop = new bip.Bop bop.getIt // yields 7 val bop2 = new bip.Bop{ override def getIt = 42 } bop2.getIt // yields 42 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |