Итак, я искал решение этой проблемы около 2 дней. Я перерыл документацию по Swift, перепробовал множество различных поисков переполнения в Google / Stack и просто набросал случайный код, но безрезультатно. Я думаю, что отчасти проблема в том, что я не знаю, как это выразить ... извините, это сбивает с толку, но, надеюсь, код, который я прикрепил, проясняет его.
В любом случае, я хочу знать, возможно ли иметь личное поле в перечислении, чтобы каждое значение перечисления имело свое значение для этого поля. Я не спрашиваю о расширении другого класса, и я не спрашиваю о связанных значениях. К сожалению, мне еще не приходилось сталкиваться с тем, что в Интернете говорится, разрешено ли это в Swift, и как это сделать. Чтобы подчеркнуть мой вопрос, я пытаюсь воссоздать следующий код Java в Swift:
// Java
public enum Direction {
LEFT(0, -1), RIGHT(0, 1), UP(-1, 0), DOWN(1, 0);
private final int rowChange, colChange;
Direction(int rowChange, int colChange) {
this.rowChange = rowChange;
this.colChange = colChange;
}
public int rowChange() {
return this.rowChange;
}
public int colChange() {
return this.colChange;
}
}
Это то, что у меня есть в данный момент, и оно работает, но я бы предпочел, чтобы оно сохраняло значения, а не переключалось между каждым возможным случаем.
// Swift
public enum Direction {
case left, right, up, down
public func rowChange() -> Int {
switch self {
case .left:
return 0
case .right:
return 0
case .up:
return -1
case .down:
return 1
}
}
public func colChange() -> Int {
switch self {
case .left:
return -1
case .right:
return 1
case .up:
return 0
case .down:
return 0
}
}
}