Scala 特性 mixin order 和 super call

2024-01-12

我有这个代码:

trait base{
  def msg: Unit= {
    println{"base"}
  }
}

trait foo extends base {
  abstract override def msg: Unit ={
    super.msg
    println("foo")
  }
}

class base2{
  def msg:Unit = {
    println{"base 2"}
  }
}

class test extends base2 with foo{
   override def msg: Unit ={
    super.msg
    println("done")
  }
}

如果我打电话(new test).msg,这会打印出如下内容:base, foo, done

但是,如果我将基本特征更改为:

trait base{
  def msg: Unit
}

它打印出如下内容:base 2, foo, done

我理解的顺序with从右到左(最后一个先出现)但是怎么样extends?为什么有时会打印base2, 但是有时base?


当你省略实现时,base is a 特质的模板并且有不同的评价规则。请参阅Scala 规范 http://www.scala-lang.org/files/archive/spec/2.11/05-classes-and-objects.html#example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 特性 mixin order 和 super call 的相关文章

随机推荐

  • 如何使用 Helm 从列表中迭代创建 pod?

    我正在尝试从 helm 中的 yaml 循环创建多个 pod 如果我跑步 debug dry run输出符合我的预期 但是当我实际部署到集群时 只存在循环的最后一次迭代 一些 yaml 给你 if Values componentTests
  • 回调值内的 Angular 2 函数不更新视图

    我已经创建了函数 在函数内部 我在回调响应后调用一个回调函数 我已经更新了字符串变量 但该字符串变量没有更新我的视图 import Component from angular2 core Component selector myview
  • JavaScript 可以从第三方域加载 XML 数据吗?

    JavaScript 可以从以下位置加载 RSS XML 提要吗Yahoo http finance yahoo com rss topstories 客户端JS是否允许访问第3方域 您可以使用我的博客文章中概述的技术雅虎查询语言不成文指南
  • IIS 中具有匿名身份验证的 FTP 网站需要用户名和密码

    我在 IIS 8 中有一个 FTP 网站 我想向公众 未经身份验证的访问者 公开该网站 该网站是使用以下设置进行配置的here http technet microsoft com en us library hh831655 aspx N
  • ViewModel - 在运行时观察 LiveData 时更改方法参数?

    我正在尝试弄清楚 MVVM 这对我来说非常新 并且我弄清楚了如何使用 Room 和 ViewModel 观察 LiveData 现在我面临一个问题 我有一个需要参数的 Room 查询 这就是我开始观察 MainActivity 中 onCr
  • 使用 CSS 控制
     中的制表符空间?                
                

    是否可以指定制表符空间占用多少像素等 pre 使用CSS 例如 假设我有一段代码出现在 pre 在网页上 function Image this Write function document write this ToString ret
  • 如何使用 MVC Azure AD 身份验证从 AD 获取角色?

    我设置了 MVC 4 应用程序 并添加了针对我们的 Azure AD 服务器的身份验证 如下所述 http msdn microsoft com en us library windowsazure dn151790 aspx http m
  • 如何创建真实的 .scn 文件?

    查看苹果示例 AR 应用程序 有许多看起来很逼真的物体 杯子 蜡烛等 然而 在 Xcode 上使用场景工具包编辑器时 很明显这仅允许您创建基本对象 我的问题是 什么软件 文件可以用来创建现实的scn物体 我确信有软件可以让您创建 3D 模型
  • Vue - 是否可以动态设置 html 元素的样式?

    简洁版本 In the data 在我的应用程序中 我定义了某些颜色 我想要html 元素的背景为这些颜色之一 基于switch陈述 长版 In the data 我有以下代码 data return item color1 color2
  • 使用 Shibboleth 进行单点登录

    我必须使用以下方法在我的 NET 3 5 项目中实现单点登录希博莱斯 详细要求是这样的 1 我使用 NET 3 5 开发了一个名为 abc com 的Web应用程序 2 有一些第三方应用程序将从 abc com 启动 3 如果我已经登录到
  • React 错误边界无法捕获错误

    我创建了我的反应应用程序vite在那里我有我的自定义反应错误边界组件从组件包装 事情是它无法捕获错误 我调试我的错误组件 但它无法接收任何值getDerivedStateFromError not componentDidCatch 这是我
  • python 修改方法内的字典

    是否可以在不将字典作为参数传递的情况下修改函数内字典的值 我不想返回字典 而只想修改它的值 这是可能的 但不一定是可取的 我无法想象为什么你不想传递或返回字典 如果你只是不想返回字典 但可以传递它 你可以修改它以反映在原始字典而不必返回它
  • 执行 Espresso 测试时更改区域设置

    我正在创建一个简单的布局 应该支持阿拉伯语言和 RTL 布局 一切正常 现在我想编写一个 Espresso 测试并断言它是否实际显示翻译后的文本 例如对于阿拉伯语 它应该显示阿拉伯语 strings xml 中的文本 到目前为止 我尝试了以
  • golang解码嵌套结构中的JSON请求并将其作为blob插入数据库

    我有一个嵌套结构 用于解码 JSON 请求 type Service struct ID string json id omitempty db id Name string json name db name Contract struc
  • Python随机播放列表不起作用[重复]

    这个问题在这里已经有答案了 我是Python新手 具有 C 背景的我很难理解这种语言的简单性 更不用说 IDLE 是如何工作的了 无论如何 我需要编写一个简单的函数 它接受一个列表并返回一个新列表 其中的元素已打乱顺序 这就是我到目前为止所
  • 如何在 lwuit TextField 或组合框中添加日历

    我正在使用 lwuit 创建一个应用程序 我想在组合框中添加日历 请尽快给我一个想法 您的意思是要在组合框值的末尾添加日历组件的选定日期还是在文本框中显示选定的日期 如果是这样 那么下面的代码将在文本框中显示日历组件的选定日期 Button
  • 检查当前线程是否为主线程

    Objective C 有没有办法检查当前线程是否是主线程 我想做这样的事情 void someMethod if IS THIS MAIN THREAD NSLog ok this is main thread else NSLog do
  • Android Studio 0.5.3 - 为什么“Make Project”不再运行构建?

    自从我升级到 0 5 3 以来 Android Studio 中的 Make Project 没有为我构建 apk 文件 有谁知道我怎样才能做到这一点 我已将 buildToolsVersion 更新为 19 0 3 这是最新版本 每次 A
  • 错误:未找到默认活动,但已声明它

    我遇到过两次奇怪的情况 我的主模块中有清单 igs main
  • Scala 特性 mixin order 和 super call

    我有这个代码 trait base def msg Unit println base trait foo extends base abstract override def msg Unit super msg println foo