Примените сопоставимый тип значения Int к объекту UIImage в Swift 4

Сделать концепцию инжекций зависимостей понятной. Давайте возьмем пример кнопки переключателя для переключения (включения / выключения) лампочки.

Без впрыска зависимостей

Переключателю необходимо заранее знать, к какой лампе подключаюсь (жестко закодированная зависимость ). Таким образом, переключатель

Switch -> PermanentBulb // напрямую подключен к постоянной лампе, тестирование невозможно легко

Switch(){
PermanentBulb = new Bulb();
PermanentBulb.Toggle();
}

С впрыском зависимостей

Коммутатор знает, что мне нужно включать / выключать любую лампу, переданную мне. Таким образом,

Switch -> Bulb1 OR Bulb2 OR NightBulb (инжектированная зависимость)

Switch(AnyBulb){ //pass it whichever bulb you like
AnyBulb.Toggle();
}

Изменение Джеймс Пример для переключателя и лампы:

public class SwitchTest { 
  TestToggleBulb() { 
    MockBulb mockbulb = new MockBulb(); 

    // MockBulb is a subclass of Bulb, so we can 
    // "inject" it here: 
    Switch switch = new Switch(mockBulb); 

    switch.ToggleBulb(); 
    mockBulb.AssertToggleWasCalled(); 
  } 
}

public class Switch { 
  private Bulb myBulb; 

  public Switch() { 
    myBulb = new Bulb(); 
  } 

  public Switch(Bulb useThisBulbInstead) { 
    myBulb = useThisBulbInstead; 
  } 

  public void ToggleBulb() { 
    ... 
    myBulb.Toggle(); 
    ... 
  } 
}`

0
задан rmaddy 16 January 2019 в 19:12
поделиться

1 ответ

Используйте структуру и добавьте пользовательский оператор равенства

struct Item : Equatable {
    let image : UIImage
    let value : Int

    static func ==(lhs: Item, rhs: Item) -> Bool {
        return lhs.value == rhs.value
    }
}

Затем создайте экземпляры Item, присваивающие изображения и соответствующие значения

let item1 = Item(image : UIImage(named: "PigAnimal")!, value: 1)
let item2 = Item(image : UIImage(named: "PigWord")!, value: 1)

и сравните

[ 112]
0
ответ дан vadian 16 January 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: