|
|
1
418
案例类可以看作 包含应完全依赖于其构造函数参数的对象的普通且不可变的数据 . 这个功能概念允许我们
结合继承,case类用于模拟 algebraic datatypes 如果一个对象在内部执行有状态的计算或者表现出其他类型的复杂行为,那么它应该是一个普通的类。 |
|
|
2
170
使我们能够做到以下几点:
请注意,树用相同的语法构造和解构(通过模式匹配),这也正是它们的打印方式(减去空格)。
|
|
|
3
76
(除了最后一个你已经提到了)。 这是与普通课程的唯一区别。 |
|
|
4
31
|
|
|
5
29
没有人提到案例类
注意,您可以通过在每个构造函数参数前面加上
sepp2k公司
前面已经提到案例类自动生成
也没有人提到case类会自动创建一个同伴
|
|
|
6
17
当构造一个case类时,Scala提供了以下内容。
因为类是不可变的,所以您可以获得访问器,访问器只是类的变量(或属性),而不是变种(因此无法更改变量)。构造函数参数将自动作为公共只读字段提供给您。使用起来比javabean构造好得多。
本质上,当您创建case类(或者如果您的类不带参数,则创建case对象)时,您从Scala得到的是一个单例对象,它的作用是 工厂 提取器 . |
|
|
7
10
1.
2.默认情况下,构造函数参数在
3.
|
|
|
8
7
另一个特点是 案例 关键字是编译器自动为我们生成的几种方法,包括Java中熟悉的toString、equals和hashCode方法。 |
|
|
9
7
假设以下case类定义:
然后在终端中执行以下操作:
如我们所见,Scala编译器生成一个正则类
让我们浏览编译后的类,并对我们得到的内容进行评论:
对象Foo:
-方法
所以case类就是语法糖。 |
|
|
10
5
班级:
但如果我们使用相同的代码但使用用例类:
人员类别:
模式匹配:
对象:单例:
|
|
|
11
4
我能找到的唯一用例是当您需要从tuple构造case类时,例如:
通过直接创建对象,您可以在没有tuple的情况下执行相同的操作,但是如果您的数据集表示为具有arity20的tuple列表(具有20个元素的tuple),那么您可以选择使用tuple。 |
|
12
4
与类不同,case类只是用来保存数据。 Case类对于以数据为中心的应用程序是灵活的,这意味着您可以在Case类中定义数据字段,并在伴随对象中定义业务逻辑。通过这种方式,您将数据与业务逻辑分离。 使用copy方法,您可以从源代码继承任何或所有必需的属性,并可以根据需要对其进行更改。 |
|
|
13
3
A.
案例类
是一个可以与
你看到了吗
模糊短语“通过模式匹配的递归分解机制”的意思是“它与
什么 案例类别 对你有用吗?这个 Wikipedia article about Algebraic Data Types 给出了两个很好的经典例子,列表和树。支持代数数据类型(包括知道如何比较它们)是任何现代函数式语言都必须具备的。
什么
案例类别
不
对你有用吗?有些对象有状态,比如
现在你可以阅读了 A Tour of Scala: Case Classes |
|
|
14
3
我认为所有的答案都给出了关于类和案例类的语义解释。 这可能非常相关,但是scala中的每个新手都应该知道创建case类时会发生什么。我已经写信了 this 答案,简单地解释了案例类。 每个程序员都应该知道,如果他们使用的是任何预构建的函数,那么他们编写的代码就相对较少,这使得他们能够编写最优化的代码,但是这种能力带来了巨大的责任。所以,使用预建函数时要非常小心。 一些开发人员避免编写case类,因为还有20个方法,您可以通过反汇编类文件看到这些方法。 refer this link if you want to check all the methods inside a case class . |
|
|
15
1
|
|
16
1
scala fiddle上的scala代码示例,取自scala文档。 |
|
|
17
0
先前的答复中没有提到的一个重要问题是 身份 |
|
|
Martee · 用抽象类型扩展trait的case类 8 年前 |
|
Georg Heiler · 将Typesafe配置解析为case类 8 年前 |
|
|
Avba · 用于从字符串创建case对象的scala“工厂”设计模式 8 年前 |
|
|
altayseyhan · Scala case类“显式公开状态” 8 年前 |
|
|
vicaba · 不成形。引用1个构造函数参数的所有case类 8 年前 |