为什么Scala API有两种组织类型的策略?
我注意到
Scala标准库使用两种不同的策略来组织类,特征和单例对象.
>使用其成员为导入的包.例如,您可以访问scala.collection.mutable.ListBuffer.这种技术很熟悉来自Java,Python等. 我猜(2)的一个优点是它组织了方法和类型,但是根据Scala 2.8的包对象,可以使用(1)完成相同的操作.为什么要有这两种策略?什么时候应该使用? 解决方法
这里注释的命名是
path-dependent types.这是你所说的2号选项,我只会说它.除非您碰巧遇到问题,否则您应该始终选择1号选项.
您错过的是Parser类引用了Parsers类中定义的内容.实际上,Parser类本身取决于在Parsers上定义的输入: abstract class Parser[+T] extends (Input => ParseResult[T]) 输入类型定义如下: type Input = Reader[Elem] 而Elem是抽象的.例如,考虑一下RegexParsers和TokenParsers.前者将Elem定义为Char,而后者将其定义为Token.这意味着每个解析器都是不同的.更重要的是,因为Parser是Parsers的子类,Scala编译器将确保在编译时您没有将RegexParsers的Parser传递给TokenParsers,反之亦然.事实上,您甚至无法将RegexParsers的一个实例的Parser传递给它的另一个实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |