我正在尝试在枚举和结构之间建立关系。我想在一个结构中有一个计算属性,它返回枚举的每个元素。但是,struct没有这个枚举的实例 - 它更像是一个静态实现。我正在寻找有关语法的建议,以使此代码正常工作 - 或者可能是表示我的类型的更好方法。以下是示例代码:
<script type="text/javascript">
var pageURL = window.location.href;
var lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1);
document.getElementById("getLink").innerhtml = lastURLSegment;
</script>
<div id="getLink"></div>
当然以上都没有编译。然而,这是我正在尝试做的一个很好的例子。在这个例子中,我不想在Scale中使用ScaleDegree的实例,但我确实希望Scale能够为每个ScaleDegree提供结果。建议以优雅的方式做到这一点?
答案 0 :(得分:1)
你可以将triad
作为enum本身的一部分:
enum ScaleDegree: Int {
case tonic
case supertonic
var triad: [Int] {
switch self {
case .tonic:
return [1,3,5]
case .supertonic:
return [2,4,6]
}
}
}
或者把它变成结构中的一个函数:
struct Scale {
func triad (degree: ScaleDegree) -> [Int] {
switch degree {
case .tonic: return [1, 3, 5]
case .supertonic: return [2, 4, 6]
}
}
}