相关疑难解决方法(0)

案例对象与Scala中的枚举

是否有关于何时使用案例类(或案例对象)与在Scala中扩展Enumeration的最佳实践指南?

他们似乎提供了一些相同的好处.

enumeration scala case-class

225
推荐指数
9
解决办法
11万
查看次数

如何在scala中创建具有额外字段的枚举

在Java中,我有类似的东西

public enum FlatFileHeaderMapping {

   HEADER_EL(1),
   HEADER_RESERVED1(5),
   HEADER_RESERVED2(2),
   HEADER_MESSAGE_TYPE(4)

   public final int fieldSize;

    private FlatFileHeaderMapping(int fieldSize) {
        this.fieldSize = fieldSize;
   }

}
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用它将每一行放入地图,然后通过此枚举访问地图中的键(如符号)

就我所见,枚举没有这种质量,并且case类没有像枚举声明那样排序 - 因此不能用于匹配记录布局,如上所示.至少在没有有序集合的支持下.

我可能会遗漏一些明显的东西,因此这个问题!

谢谢

射线

enums scala

14
推荐指数
3
解决办法
8441
查看次数

使用Singleton对象作为枚举元素的Scala枚举以及迭代它们的可能性?

我已经看过关于模拟Javaenum案例类与EnumerationScala问题,但似乎太多的努力,太少的好处.

基本上我想有一个values方法返回所有单例对象DayOfWeek而不重复自己几次.

这就是我的代码应该是这样的:

object DayOfWeek extends MyEnum {
  object MONDAY extends DayOfWeek(1)
  object TUESDAY extends DayOfWeek(2)
  object WEDNESDAY extends DayOfWeek(3)
  object THURSDAY extends DayOfWeek(4)
  object FRIDAY extends DayOfWeek(5)
  object SATURDAY extends DayOfWeek(6)
  object SUNDAY extends DayOfWeek(7)
}

class DayOfWeek(ordinal: Int)
Run Code Online (Sandbox Code Playgroud)

该方法values应返回类似如下所示的内容:

val values = Array(MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
                   FRIDAY, SATURDAY, SUNDAY)
Run Code Online (Sandbox Code Playgroud)

一切都应该在MyEnum特质中发生,所以我只需要扩展它来获得功能.

trait MyEnum {
  val values = this.getClass.getField("MODULE$") etc. etc.
}
Run Code Online (Sandbox Code Playgroud)

有什么建议可以做到这一点吗?这个想法是values访问类并找到它们正在扩展的类的所有单例对象. …

java reflection enums scala

9
推荐指数
1
解决办法
2258
查看次数

Scala Enums - 如何分配初始值?

object WeekDay extends Enumeration {
   type WeekDay = Value
   val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
Run Code Online (Sandbox Code Playgroud)

你会如何设置一个初始值,WeekDay.Mon == 1WeekDay.Tue == 2等会是真的吗?

在Enumeration中有一个构造函数Enumeration(initial: Int, names: String*),有没有办法可以用它来创建WeekDay对象?

enums scala

4
推荐指数
1
解决办法
895
查看次数

Scala/Java枚举

我已经读过这个这个,但我仍然不理解在Scala中这样做的(惯用的)等效方法

enum Status { 
    OK(1, "Ok", "Okay"),
    NOT_OK(5, "Not Ok", "Not Okay")
    BAD(10, "Bad", "Run for your life")

    int code;
    String name;
    String description; // custom fields

    Status(int code, String name, String description) {
        this.code = code;
        this.name = name;
        this.description = description;
    }
}

class Main {
    public static void main(String[] args) {
        for(Status status : Status.values) { // iterate through them
            doStuff(status);
        }
    }

    private doStuff(Status status) {
        System.out.println(status.description);
        // and more
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums scala idiomatic

4
推荐指数
1
解决办法
927
查看次数

标签 统计

scala ×5

enums ×4

java ×2

case-class ×1

enumeration ×1

idiomatic ×1

reflection ×1