Scala 中提取特征
最后修改时间:2023 年 9 月 7 日通过提取特征重构,您可以从 Scala 类、对象或特征中提取选定的成员到新特征中。IntelliJ IDEA 支持def
、val
和var
类型成员。
提取性状
在编辑器中,选择要重构的代码成员。
转到重构 | 摘录| 特质。
或者,右键单击编辑器中的任意位置以打开上下文菜单并选择Refactor | 特质。
在打开的对话框中,输入新的特征名称并选择要提取的成员。
如果您需要选择要提取的成员部分中列出的所有成员,请先按,然后按。Ctrl0ASpace
单击重构。
例子
让我们创建一个Calculator
具有多个方法的类,并将其中一个方法 ( mul
) 提取到特征中。
班级计算器
方法mul被提取为一个新的特征Multiplier
重构后的类计算器
class Calculator {
def add(a: Int, b: Int): Int = a + b
def mul(a: Int, b: Int): Int = a match {
case 0 =>0
case _ => add(b, mul(a-1, b))
}
}
trait Multiplier {
this: Calculator =>
def mul(a: Int, b: Int): Int = a match {
case 0 => 0
case _ => add(b, mul(a - 1, b))
}
}
class Calculator extends Multiplier {
def add(a: Int, b: Int): Int = a + b
}
IntelliJ IDEA 创建一个新特征Multiplier
,其中包含mul
方法及其定义主体。类Calculator
扩展了特征Multiplier
。
物品 | 描述 |
---|---|
从中提取特征 | 此字段包含您尝试从中提取成员的类、对象或特征的名称。 |
性状名称 | 使用此字段输入新特征的名称。 |
特质包 | 使用此字段为新创建的特征添加包。我们建议您使用与要从中提取的原始类、对象或特征相同的包。 |
要提取的成员 | 使用此区域选择要提取的成员。 当选择提取摘要复选框时,新特征将仅包含声明,而没有定义主体。例如,在这种情况下,不包含主体的抽象方法将在原始类中被覆盖,并且定义将保留在那里。 如果未选中此复选框,该方法将被移动到新特征,其定义如示例中所示。 |
感谢您的反馈意见!
此页面是否有帮助?