首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >val b和var b之间的“真正”区别是什么?

val b和var b之间的“真正”区别是什么?
EN

Stack Overflow用户
提问于 2018-01-15 06:49:30
回答 3查看 312关注 0票数 0

以下内容之间的“真正”区别是什么?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val b = ( x:Double) => x * 3
var b = ( x:Double) => x * 3

从技术上讲,一旦为val赋值,就不应该更改它。但是,作为第一条语句的一部分,可以通过传递不同的x值将b的值更改为不同的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala> val b = ( x:Double) => x * 3                         
b: Double => Double = $$Lambda$1109/411756754@7a522157      

scala> b(3)                                                 
res1: Double = 9.0                                          

scala> b(4)                                                 
res2: Double = 12.0  

这里到底发生了什么?这不是说b的价值正在发生变化吗?

EN

回答 3

Stack Overflow用户

发布于 2018-01-15 06:53:50

b是一个接受Double并返回1的函数。

函数本身不能改变,它返回的值也不能改变(函数是第一类的值)。

如果您尝试这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b = (x : Double) => x * 6

你会得到:

错误:重新分配到val

但也可以更改var one:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala> b = (x : Double) => x * 7
b: Double => Double = $$Lambda$1308/1272194712@9e46050

但请注意,当您更改var类型时,应该保留它的类型:接受Double并返回Double的函数,与更改任何其他类型(如IntegerBoolean )时相同。

票数 2
EN

Stack Overflow用户

发布于 2018-01-15 06:54:07

在您发布的示例中,b是一个函数。您随后会将不同的值传递给该函数。b的值不会因此而改变。

语法如下:

票数 0
EN

Stack Overflow用户

发布于 2018-01-15 07:33:25

在scala中,'val‘是一个不可变的变量,它具有只读属性,这就是为什么它只打印值'9’,但在第二个语句中,'b‘被声明为'var’,这允许我们读写这个值,所以它打印值'12‘。

Scala允许你决定一个变量是不可变的还是可变的。不可变的是只读的,而可变的是读写的。不可变变量是用关键字“val”声明的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala> val age:Int=22

在这里,age在声明过程中被初始化为一个值。由于它已声明为val,因此不能将age重新分配给新值。任何这样做的尝试都将导致al重新分配到val错误。

可变变量用关键字“var”删除。与val不同,“var”可以重新分配给不同的值或指向不同的对象。但它们必须在声明时初始化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala> var age:Int=22
age: Int=22

scala> age=35
age: Int=35
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48258142

复制
相关文章
val b = a?: 0,a 是 Double 类型,那 b 是什么类型?
这个问题看上去似乎并没有什么难度,在 Kotlin 当中,所有数值类型都是 Number 的子类,也就是说 Double 和 Int 都是它的子类,这种情况下, b 的类型应该毫无疑问的是 Number。
bennyhuo
2020/02/20
7650
var、let和const之间的区别
即 let和 const不需要先声明,再使用,否则会报错,而 var不需要先声明再使用,可以先使用后声明,不会报错,不过赋值的时候,值一直是 undefined
赤蓝紫
2023/03/11
1.4K0
var、let和const之间的区别
MySQL B-Tree和B+Tree的区别
B-Tree 的节点是一个二元数组 [key,data],key 是记录的键,data 是键对应的数据,B-Tree中的每个节点根据实际情况可以包含大量的关键字信息和分支,每个节点的每个 key 左右各有一个指针,非叶子节点的指针分别指向下一层的节点,叶子节点的指针为 null,如下图:
用户4945346
2020/07/06
7580
简述B2B2B系统与B2B平台转化条件和区别
B2B模式的厂家需要借助各种2B平台,实现用B2B模式对市场更有效率的覆盖,并且实现对终端的更有效率的营销。需要借助各种2C平台实现与消费者的链接,特别是要重点挖掘直接面对消费者的营销价值。需要借助各种020平台实现链接消费者,并实现到家模式的快速覆盖。
数商云
2020/08/07
1.4K0
简述B2B2B系统与B2B平台转化条件和区别
B树与B+树的区别
我们先来看看Stack Overflow上面是怎么解释的(没有梯子的,博主已经把回答copy下来了):
yesr
2019/03/14
4.7K0
聊聊kotlin的val跟var
val:英文读value,代表是immutable, 只读的意思 比如下面这个kotlin代码
韦东锏
2021/09/29
1.2K0
聊聊kotlin的val跟var
深入了解 B-Tree 和 B+Tree 的区别
系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。
全栈程序员站长
2022/07/18
2910
深入了解 B-Tree 和 B+Tree 的区别
深入了解 B-Tree 和 B+Tree 的区别
系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。
码农编程进阶笔记
2021/07/20
7300
深入了解 B-Tree 和 B+Tree 的区别
Java中 a+=b 和 a=a+b 有什么区别?
今天舍友突然问我“在java中 a+=b 和a=a+b 有什么区别”,说这是一道面试题。当时就不假思索的回答:“一样啊”,然后他说有位面试者也回答说一样,所以被淘汰了。当时感觉很惊奇,书上写的就是一样,怎么会?于是就查了一下,并且自己到eclipse中试了一下,原来他们之间还真的有区别。
淡定的蜗牛
2019/09/16
1.1K0
Java中 a+=b 和 a=a+b 有什么区别?
lateinit var 和var 区别
如果说 lateinit var 和普通的var 有什么区别的话,可以看这篇文章 定义了 aa 是 lateinit String ,而 bb 是 String?。 class Test {
ppjun
2018/09/05
1.6K0
【说站】mysql中B+Tree和B-Tree的区别
1、B-树的关键词和记录放在一起,叶节点可以看作是外部节点,不包含任何信息;B+树的非叶节点只有关键词和指向下一个节点的索引,记录只放在叶节点上。
很酷的站长
2022/11/23
5010
【说站】mysql中B+Tree和B-Tree的区别
JS高级测试: var {a,b,c} = { "c":10,"b":9,"a":8}结果中,a,b,c的值分别是?
2.对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
舒克
2019/10/28
3.1K0
JS高级测试: var {a,b,c} = { "c":10,"b":9,"a":8}结果中,a,b,c的值分别是?
a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?
1、在JAVA程序中由String和“+”参与的运算变量都会被转为字符类型,可以理解为先把32313133353236313431303231363533e4b893e5b19e31333335313237变量转为字符型然后在进行字符拼接。
全栈程序员站长
2022/09/08
17.1K0
a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?
EDI与B2B电子商务之间的关系
如今,B2B企业比以往任何时候都更加依赖技术。被迫数字化转型,瞬息万变的市场条件以及采购方的转变意味着现代电子商务是B2B企业的关键战略。
知行软件EDI
2021/02/07
9190
B树、B+树的区别及MySQL为何选择B+树
B树和B+树都是一种多路搜索树,常用于数据库和文件系统中进行索引操作。在介绍B树和B+树的区别之前,先来了解一下它们的定义。
青山师
2023/05/05
1.1K0
BTree,B-Tree,B+Tree,B*Tree都是什么
       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
阳光岛主
2019/02/19
6710
var和let/const的区别
let和 const是 ES6 新增的命令,用于声明变量,这两个命令跟 ES5 的 var有许多不同,并且 let和 const也有一些细微的不同,再认真阅读了阮一峰老师的文档后,发现还是有一些不知道的细节...
OBKoro1
2020/10/27
3960
var和let/const的区别
B树、B+树到底是什么?
B树又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。一般从查找效率考虑,通常要求m>=3.
跋扈洋
2021/09/03
1.7K0
B树、B+树到底是什么?
mysql索引b树b+树_B树的度是什么意思
聚集索引表记录的排列顺序和索引的排列顺序保持一致,所以查询效率相当快。只要找到第一个索引记录的值,其余的连续性的记录也一定是连续存放的。 聚集索引的缺点就是修改起来比较版,因为它需要保持表中记录和索引的顺序需要一致,在插入新记录的时候就会对数据也重新做一次排序
全栈程序员站长
2022/09/22
8880
点击加载更多

相似问题

a =b和b=a之间的区别?

213

fibonacci的‘a,b= b,a+b`和’a= b;b= a+b`之间的区别是什么?

22

A=a+ b和a += b之间的区别是什么?

13

a[:] =b和a= b[:]之间的区别?(Python)

33

A += b和a =+ b以及a++和++a之间的区别是什么?

90
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文