2017-01-16 4 views
-1

При программировании на Java есть общее решение для более чистого кода, когда мы используем статические константы, как это:Использование глобальных констант в Swift

public class Game { 
    private static final int MAX_PLAYERS_NUMBER = 1000; 
} 

мне очень нравится этот подход, и я хотел бросить его как-то Swift. Так что я начал с статических констант:

class Game { 
    static let maxPlayersNumber = 1000 
} 

Он выглядит хорошо, но это странно в коде, когда я всегда должен использовать имя класса в не-статические методы:

func doSomething() { 
    print(Game.maxPlayersNumber) 
} 

Так что я подумал о двух подходы, один раз просто свойство в классе:

class Game { 
    let maxPlayersNumber = 1000 
} 

И второе является использование глобальной константы в файле:

let maxPlayersNumber = 1000 

class Game {} 

Тем не менее я не уверен, что является лучшим решением для использования констант в методах.

ответ

2

Если вы хотите определить глобальную константу в проекте, вы должны использовать struct, а не класс, предложенный Apple.

struct AppConstant { 
    static let constant1 = 100 
} 

Если вы хотите, чтобы константа по всему классу, вы должны просто определить свойство с let, как вы определили наконец.

class Game { 

    let maxPlayersNumber = 1000 

    func doSomething() { 
     print(maxPlayersNumber) 
    } 
} 
+0

Я знаю, что теперь нет проблем с производительностью и памятью, но действительно ли это хороший подход для загрузки этих констант каждый раз при создании экземпляра этого класса? Я всегда думал, что, поскольку статические константы загружаются только один раз, класс действительно лучше. Я говорю, используя константы только в одном классе. – Tajnero

+0

Да, проблема с производительностью будет отсутствовать, потому что текущий режим xcode постоянный, поэтому, если вы определяете переменную, в то время первый компилятор учитывал ее как константу, если вы определили переменную, и вы не мутируете ее, то компилятор даст предупреждение о том, что вы должен сделать его постоянным. Таким образом, режим по умолчанию является постоянным. Не следует влиять на производительность, если вы создаете константу как свойство. –

+0

О, хорошо, кажется разумным, я принимаю ваш ответ. – Tajnero

-1

Вы можете создать новый файл, унаследованный от NSObject и объявить константы в этом файле, как показано ниже:

public static let maxPlayersNumber = 1000 

здесь, maxPlayersNumber могут быть доступны на протяжении всего объема проекта следующим образом:

Constants. maxPlayersNumber 

где Constants - это имя файла, а maxPlayersNumber - константа, объявленная в файле.

+0

Прежде всего использование имени класса Константы для всех констант были бы ужасной идеей при создании большего проекта. Во-вторых, я должен использовать имя класса или структуры до константы. – Tajnero

+0

Константы имя было просто примером для вашей справки. Вы можете использовать что угодно, как хотите. –

Смежные вопросы