swift - 枚举函数并在 swift 上用新值减去旧值

标签 swift enums subtraction

我正在尝试使用 Swift 中的枚举器函数计算音符的半音变化了多少,但我不知道如何应用它。这是我所做的:

enum TonalityChange: String{
    case C = "1/2"
    case Csharp = "1"
    case D = "1(1/2)"
    case Dsharp = "2"
    case E = "2(1/2)"
    case F = "3"
    case Fsharp = "3(1/2)"
    case G = "4"
    case Gsharp = "4(1/2)"
    case A = "5"
    case Asharp = "5(1/2)"
    case B = "6"
}

然后我为枚举声明一个 var:

var OldTonality : B
var NewTonality : C

var Difference : //This will do the subtraction result

然后我必须减去这两个值以获得一个自然数,让我知道变化,例如:

6 - (1/2) = 5(1/2)

最后,我想制作一条警告消息,如下所示:

"Great! Tonality changed by \(Difference) tones!"

or "Great! Tonality changed by (1/2) tones!"

但我整天都在思考如何做这个逻辑。

最佳答案

将 TonalityChange 设为 float 而不是字符串:

enum TonalityChange: Float {
    case C = 0.5
    case Csharp = 1
    case D = 1.5
    case Dsharp = 2
    case E = 2.5
    case F = 3
    case Fsharp = 3.5
    case G = 4
    case Gsharp = 4.5
    case A = 5
    case Asharp = 5.5
    case B = 6
}

现在您可以进行比较了。

let diff = TonalityChange.B.rawValue - TonalityChange.C.rawValue

关于swift - 枚举函数并在 swift 上用新值减去旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52195200/

相关文章:

javascript - 2015-12-31 减去 1 个月得到 2015-12-01

R SF : Find polygons outside of multiple overlapping polygons

ios - 如何使用 Realm 通知来检测嵌套 Realm 对象的更改

ios - 列表内的 SwiftUI ScrollView 具有可怕的性能影响

ruby-on-rails - 在不保存模型的情况下更改 Rails 中的枚举值

java - 按字段对一组元素进行排序

c# - 从标签中减去一个数字

ios - 测试与非测试中的 Swift 和 CoreData 转换问题

iOS swift 如何将 imageview 准确地放置在 uiview 中

c++ - 为什么 C++ numeric_limits<enum_type>::max() == 0?