对于Java中的静态块,swift中的等价物是什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于Java中的静态块,swift中的等价物是什么相关的知识,希望对你有一定的参考价值。

如何在Swift中放置一个静态块,就像在Java中一样?我尝试过static var block = {},但这不行。它必须专门打电话。

我想要的就像在Java中一样,静态大括号中的整个块在初始化类时执行。在Swift中有类似的东西。我在互联网上搜索过,没有一个灵魂有答案!类似的功能或解决方法也可以。

public class EnumRingLevel
{
   public static final EnumRingLevel DEFAULT = new EnumRingLevel(
      0, 0, "DEFAULT", 1000, 2000);

   public static final EnumRingLevel SILENT = new EnumRingLevel(
      10, 1, "SILENT", 1001, 2001);

   public static final EnumRingLevel QUIET_BEEP = new EnumRingLevel(
      20, 2, "QUIET_BEEP", 1002, 2002);

   public static final EnumRingLevel NORMAL_BEEP = new EnumRingLevel(
      30, 3, "NORMAL_BEEP",1003, 2003);

   private final int gdbval;
   private final int gindex;

   public final String ginternalname;

   private final int gcaptionId;
   private final int gdisplaycaptionId;

   private static EnumRingLevel[] gRingLevelsSortedOnIndex = null;
   private static String[] gCaptionsSortedOnIndex = null;

   static
   {
      gRingLevelsSortedOnIndex = new EnumRingLevel[6];

      gRingLevelsSortedOnIndex[0] = DEFAULT;
      gRingLevelsSortedOnIndex[1] = SILENT;
      gRingLevelsSortedOnIndex[2] = QUIET_BEEP;
      gRingLevelsSortedOnIndex[3] = NORMAL_BEEP;
      gRingLevelsSortedOnIndex[4] = LOUD_BEEP;
      gRingLevelsSortedOnIndex[5] = CUSTOM;


      gCaptionsSortedOnIndex = new String[6];

      for(int i=0;i<gRingLevelsSortedOnIndex.length;i++)
      {
         gCaptionsSortedOnIndex[i] = gRingLevelsSortedOnIndex[i].getCaption();
      }
   }

   private EnumRingLevel(
      int dbval, int index, String internalname
      , int captionResource, int displaycaptionResource)
   {
      //private constructor

      gdbval = dbval;
      gindex = index;
      ginternalname = internalname;
      gcaptionId = captionResource;
      gdisplaycaptionId = displaycaptionResource;

   }
}
答案

试试这个,

private static var gRingLevelsSortedOnIndex: [EnumRingLevel] = {
    return [DEFAULT, SILENT, QUIET_BEEP, NORMAL_BEEP, LOUD_BEEP, CUSTOM]
}()

以上是关于对于Java中的静态块,swift中的等价物是什么的主要内容,如果未能解决你的问题,请参考以下文章

Java中的静态块[重复]

iOS Swift 中的 firebase 实时数据库推送等价物是啥?

java中的静态代码块、代码块、构造器的执行顺序是怎样呢,这三者有啥作用呢

什么是 Swift “扩展”的 dart 等价物?

java中关于静态变量的问题

swift 3中的静态关键字