Scala 中 def 和 val 的区别

2024-04-22

循环定义如下:

 def loop : Boolean = loop

当x定义为:def x = loop然后控制台中会显示“x: Boolean”。

and

当x定义为:val x = loop然后就进入无限循环

我知道 def 正在使用按名称调用,而 val 正在使用按值调用。尽管上面定义的循环这一点还不太清楚。


def不评估作业的右侧。就像

def f(x : Int) = x + 2

不(在这种情况下逻辑上不能)评估f任何东西,只是定义函数f, 意味着, 两者都不是def loop : Boolean = loop nor def x = loop评价任何事物。您只是定义一个要在其他点执行的函数。

But val确实需要评估作业的右侧。所以val x = loop尝试执行右侧的表达式。尝试评估loop但永远不会终止,因为loop是一个无限循环。

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

Scala 中 def 和 val 的区别 的相关文章

随机推荐

  • Angular JS UI-网格删除行

    我是新来的ui grid我正在尝试在 AngularJS 中实现一个表格 如下图所示 我正在尝试选择一行并使用该特定行上的删除按钮将其删除 这ui grid文档要求我们使用gridApi但我找不到足够的文档 请在此处查看如何删除行的工作示例
  • 如何组合两个css3渐变?

    我有两个用于 HTML BODY 背景的 CSS 我使用这个 css 作为我页面的背景 我想将这两个重叠并获得组合效果 IE10 Consumer Preview background image ms linear gradient to
  • 连接到 atlas mongo 数据库

    我正在使用node Js expressjs mongodb 和 Atlas var Db require mongodb Db var Server require mongodb Server 上面的方法对我不起作用 通过使用atlas
  • 如何在 WPF 窗口中显示屏幕保护程序的预览

    我希望能够在 WPF 窗口内显示屏幕保护程序的预览 使用容器或控件或 我知道Windows本身将 p 参数传递给屏幕保护程序以获取预览 但是如何在 WPF 应用程序中显示该预览呢 我应该获取它的句柄并将其父级更改为我的容器或控件吗 如何 您
  • python 中单词的动名词形式

    我想获得字符串的动名词形式 我还没有找到调用库来获取动名词的直接方法 我应用了以 ing 结尾的单词的规则 但是因为异常导致我收到了一些错误 然后 我检查 cmu 单词以确保生成的动名词单词正确 代码如下 import cmudict im
  • 返回参数的类型名查找

    最近有一个学生问我一个编译问题 答案很简单 但现在我正在努力寻找原因 一个简单的例子 include
  • 获取 Jenkins 多分支管道中的分支列表

    Jenkins 多分支管道项目的 Blue Ocean 界面显示了自动创建的多个分支 是否有一种编程方式可以从要添加到 Jenkinsfile 的代码中列出管道中的分支 此问题询问位于 Jenkins 应用程序对象模型内的 Jenkins
  • 模板化成员函数的地址[重复]

    这个问题在这里已经有答案了 在下面的例子中 如何找到成员函数f的地址 template
  • 时间戳格式 - 从 1/1000 秒到 1/100 秒

    需要将1 1000秒分辨率的时间戳转换为1 100分辨率 我可能会用to char timestamp text 用于此目的的格式化功能 但是需要帮助text在这里使用 输入表 注意 这里的时间戳存储为 varchar ms1000 val
  • 复杂对象上的自定义 NSSortDescriptor

    这是我的第一篇文章 如果我可能不尊重所有惯例 我很抱歉 尽管我会尽力而为 我以前总是在 SO 上找到解决我的问题的方法 但我完全陷入了一个相当复杂的可可问题 我正在尝试对 CoreData 对象列表进行复杂的排序 我有一个由 Book 对象
  • Jquery:停止传播?

    我已经添加了 stopPropagation 但是 我仍然连续出现两个弹出窗口 这比以前好多了 其中一个被单击的元素有 20 个弹出窗口 是否有更好的方法或者我错过了什么 top document ready function click
  • 如何在 Android 浏览器上阻止某些网址?

    如何在 Android 默认浏览器上阻止某些网址 网站 我想限制用户访问某些列入黑名单的网址 例如 如果我想阻止 Facebook 那么手机内置应用程序浏览器将无法访问此 Facebook 网站 您想通过让用户安装应用程序来阻止用户设备上的
  • 使用 shutdown 终止 Amazon EC2 实例

    我可以使用 API 命令终止 Amazon EC2 实例ec2 终止实例但我试图找出如何在登录到 EC2 实例本身时执行此操作 我试过了立即关闭 h但这只是 停止 实例 而没有完全终止它 有什么办法可以做到这一点吗 您可以在创建实例时设置一
  • tkinter 无法正确识别屏幕分辨率

    我使用的是 4k 显示器 3840x2160 from tkinter import root Tk width root winfo screenwidth height root winfo screenheight print wid
  • MVC DropDownList SelectedValue 未正确显示

    我尝试搜索 但没有找到任何可以解决我的问题的内容 我在 Razor 视图上有一个 DropDownList 它不会显示我在 SelectList 中标记为 选定 的项目 以下是填充列表的控制器代码 var statuses new Sele
  • 密码强度计

    我正在尝试创建自己的 JS 密码强度计 它之前可以工作 但我不喜欢它的工作方式 所以我尝试使用 score 10 而不仅仅是 score 这是我的代码 http jsfiddle net RSq4L http jsfiddle net RS
  • 为什么 Kotlin 编译器需要 var 属性的显式初始化器?

    我无法理解以下 Kotlin 文档 The initializer getter and setter are optional Property type is optional if it can be inferred from th
  • 无法读取未定义的属性“forEach”

    var funcs 1 2 forEach i gt funcs push gt i 为什么会产生下面的错误 TypeError Cannot read property forEach of undefined at Object
  • 如何为 JVectorMap jquery 插件生成新的自定义地图?

    有用的链接 JVectorMap http jvectormap com http jvectormap com 购物中心示例 http jvectormap com examples mall http jvectormap com ex
  • Scala 中 def 和 val 的区别

    循环定义如下 def loop Boolean loop 当x定义为 def x loop然后控制台中会显示 x Boolean and 当x定义为 val x loop然后就进入无限循环 我知道 def 正在使用按名称调用 而 val 正