【问题标题】:What is a Singleton Type exactly?什么是单例类型?
【发布时间】:2020-04-26 19:15:03
【问题描述】:

什么是单例类型?有什么应用,有什么影响?

例子更受欢迎,外行术语更受欢迎!

【问题讨论】:

    标签: scala types singleton-type


    【解决方案1】:

    如果您将类型视为一组值,则值x 的单例类型是仅包含此值的类型({x})。用法示例:

    1. 模式匹配:case _: Foo.type 使用eq 检查匹配的对象是否与Foo 相同,其中case Foo 仅使用equals 检查它是否等于Foo

    2. 需要写下object 的类型(作为类型参数、实参等):

      object A
      def method(): A.type = A
      
    3. 为了保证方法的返回值是它被调用的对象(对于方法链很有用,例如from here):

      class A { def method1: this.type = { ...; this } }
      class B extends A { def method2: this.type = { ...; this } }
      

      您现在可以调用new B.method1.method2,如果没有this.type,您将无法调用,因为method1 将返回A

    【讨论】:

    • 也许你会好心举一些例子来说明这个的用处?
    • @ashy_32bit 我添加了一些示例。
    • “检查匹配的对象是否与foo相同”——您的意思是“与Foo相同”吗?
    • @VasyaNovikov 是的,已修复。
    • 很好的答案,最好有一个应用程序 2 的示例。为了完整性和精确性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2010-09-17
    • 2014-08-10
    相关资源
    最近更新 更多