Scala traits exposing protected members? -
given class like:
class myclass { protected object myobj { ... } } is possible write trait permit exposing myobj. e.g. inheritance following:
class testmyclass extends myclass { val getmyobj = myobj } but want via trait, following doesn't typecheck:
trait exposemyobj { val getmyobj = myobj // super.myobj/this.myobj don't work } and use like:
class testmyclass extends exposemyobj is possible reproduce functionality in testmyclass trait expose protected object, , if how?
if know trait mixed in instance of myclass (or subclass), can enforce expectation self-type, , access object:
trait exposemyobj { self: myclass => val getmyobj = myobj } edit: example of using trait:
class testmyclass extends myclass exposemyobj val test = new testmyclass test.getmyobj // accesses myobj defined in myclass. edit 2: attempting address @jbrown's comment (re: testing queries within repos) - @ doing following - first, in each repo's file, add trait each repo holding queries repo:
trait userqueries { // @ making protected, if protected def query1(param: string) = list(param) // silly implementation, enough make point ... // other queries } class userrepo extends userqueries // has (internal) access queries then in test class file given repo:
class userqueriestester extends userqueries scalatest { // or whatever test framework using // (public) tests run - eg: def testquery1 = query1("test") should (list("test")) }
Comments
Post a Comment