2017-01-05 8 views
1

Можете ли вы изменить значение общедоступной переменной из другого модуля или открыть эту переменную.Возможно ли изменить значение общедоступной переменной из другого модуля?


Мое понимание общественности/открыть в быстром 3 лет:

  • Общественные классы могут быть сделаны в другом модуле, но только открытые классы могут быть подклассы в другом модуле.
  • Публичные функции можно вызывать в другом модуле, но только открытые функции могут быть перезаписаны в другом модуле.
  • Но я не уверен насчет переменных.

ответ

1

Вы, безусловно, можете! Вот это отличный способ, вы можете сделать это:

В модуле, который содержит переменную, которую вы хотите управлять:

// Must be declared globally 
public var someValue = "hi" 

В другом модуле, который вы хотите, чтобы манипулировать переменной из:

// Initialize the module that holds the variable you want to manipulate 
var myModule = SomeModule() 

// Manipulate the variable (someValue) 
myModule.someValue = "bye" 

переменная someValue теперь будет иметь значение «до свидания»

+0

Действительно оценить это, разве это означает, что нет никакой разницы между открытым варом и общественным варом? (и разница между открытыми и общедоступными - это просто функции и классы) –

+0

На самом деле существуют незначительные различия между «public» и «open» vars, основной из которых - «открытые» vars, являются подклассами, находящимися вне модуля, а 'public' варов нет. @Martin R отлично справляется с этим: http://stackoverflow.com/questions/38947101/what-is-the-open-keyword-in-swift –