我正在學習Swift 2(和C,但也不是很久),並且我花了很長時間來處理遞歸枚舉。Swift中的遞歸枚舉
看來我需要把indirect
放在enum
之前,如果是遞歸的話。然後,我有第一個案例,其中括號之間有Int
,因爲後來在交換機中它返回Integer
,是嗎?
現在第一個問題與第二種情況Addition
。在那裏我必須在括號之間插入ArithmeticExpression
。我試着把Int
放在那裏,但它給了我一個錯誤,必須是ArithmeticExpression
而不是Int
。我的問題是爲什麼?我無法想象任何事情是什麼。爲什麼我不能在那裏放兩個Int
?
下一個問題是關於ArithmeticExpression
。在func
solution
它進入一個值爲ArithmeticExpression
類型的表達式,是否正確?其餘的,至少現在是完全清楚的。如果任何人都可以用簡單的方式向我解釋,那會很棒。
下面是完整的代碼:
indirect enum ArithmeticExpression {
case Number(Int)
case Addition(ArithmeticExpression, ArithmeticExpression)
}
func solution(expression: ArithmeticExpression) -> Int {
switch expression {
case .Number(let value1):
return value1;
case . Addition(let value1, let value2):
return solution(value1)+solution(value2);
}
}
var ten = ArithmeticExpression.Number(10);
var twenty = ArithmeticExpression.Number(20);
var sum = ArithmeticExpression.Addition(ten, twenty);
var endSolution = solution(sum);
print(endSolution);