首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中DNA到RNA的转录

Swift中DNA到RNA的转录
EN

Stack Overflow用户
提问于 2018-02-01 17:37:44
回答 2查看 233关注 0票数 0

我试图在Swift中返回一条DNA链(一条字符串)的RNA补体。基本上,如果DNA有"T",我就用"U“代替它。

我的代码是:

代码语言:javascript
复制
func toRNA(DNA: String) -> String{
    var RNA = DNA
    for ntide in RNA{
        if ntide == "T"{
            ntide = "U"
        }
    }
    return RNA
}

Swift::错误

不能赋值:'ntide‘是'let’常量

代码语言:javascript
复制
ntide = "U"
~~~~~ ^
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-01 17:45:51

您的问题是由于在for ... in ...循环中声明的变量是不可变的。对于一个简单的Collection,您只需迭代Collection中存在的索引范围,并使用下标来访问可变变量的值。

代码语言:javascript
复制
func toRNA(_ DNA:[Character])->String{
    var RNA = DNA
    for i in 0..<DNA.count {
        if RNA[i] == "T" {
            RNA[i] = "U"
        }
    }
    return String(RNA)
}

let dna:[Character] = ["A","C","G","T"]
toRNA(dna) //"ACGU"

但是,由于String索引和下标的不同,这对于您的问题并不是那么简单,因此上面的示例使用Array<Character>来显示泛型方法。有关Strings的具体问题,请参阅下面的解决方案。

您可以绕过这个问题,而不是将DNA复制到RNA,然后通过RNA迭代以获得必要的字符,只需遍历DNA并更改要添加到其中的字符。

代码语言:javascript
复制
func toRNA(DNA: String) -> String{
    var RNA = ""
    for char in DNA {
        if char == "T" {
            RNA.append("U")
        } else {
            RNA.append(char)
        }
    }
    return RNA
}

一个简单的解决方案不能解决特定的问题,但可以解决这个特定的问题,它使用一个简单的map将所有属于"T"的字符转换为"U"

代码语言:javascript
复制
func toRNA(DNA: String) -> String{
    return String(DNA.map({$0=="T" ? "U" : $0}))
}
票数 2
EN

Stack Overflow用户

发布于 2018-02-01 17:41:14

使用

代码语言:javascript
复制
func toRNA(DNA: String) -> String{
    return DNA.replacingOccurrences(of: "T", with: "U")
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48568670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档