函数在 Swift 2 中不起作用。(已定义变量的未解析标识符)

Function not working in Swift 2. (Unresolved identifier for defined variable)

我正在努力学习 Swift 2 来自 Python 的背景。开始制作一个非常简单的函数来计算 G 和 C。我在 var length: Float = Float(SEQ.characters.count)

行收到 Use of unresolved identifier 'SEQ'

我做错了什么?肯定是在函数开头定义的?

尝试了以下帖子:

Swift - Use of unresolved identifier

func GC(input_seq: String) -> Float {
    let SEQ = input_seq.uppercaseString
    var counter = 0.0
    for nt in SEQ.characters {
        if (nt == "G") {
            var counter = counter + 1
        }
        if (nt == "C") {
            var counter = counter + 1
            }
        }
    }
    var length: Float = Float(SEQ.characters.count)

    return counter/length
}

let query_seq = "ATGGGGCTTTTGA"
GC(query_seq)

你做错了几件事。

  1. 您正在创建一个 Double 计数器(不是您可能想要的 Float):var counter = 0.0

你真的需要它作为一个整数,因为它是一个计数器。您可以稍后将其转换为 Float。 var counter = 0 将创建一个 Int 变量

  1. 您正在 if 块中创建第二个和第三个局部变量:

    if (nt == "G") { var counter = counter + 1 }

我认为您不了解基础知识,从头开始阅读 Swift 这本书可能对您有益。

  1. 这确实是一个改进 - 您可以使用简写:

counter = counter + 1counter += 1 甚至 counter++

这是您的代码的工作版本:

func GC(input_seq: String) -> Float {
    let SEQ = input_seq.uppercaseString
    var counter = 0
    for nt in SEQ.characters {
        if (nt == "G") {
            counter++
        }
        if (nt == "C") {
            counter++
        }
    }

    return Float(counter)/Float(SEQ.characters.count)
}

let query_seq = "ATGGGGCTTTTGA"
GC(query_seq)

希望对您有所帮助。