斯威夫特:' Class.type'没有名为'变量'

时间:2016-02-07 20:40:53

标签: swift

我最近开始了一个Swift编程语言课程,需要一些关于我的第一个程序的帮助。 我正在使用playground在Xcode v6.3.2中编写一个anagram程序。根据我的逻辑,我首先按字母顺序排序,然后比较它们。将word1和word2声明为数组并指示' Anagram.type'时会发生错误。没有名为' word1'的成员。 我相信我的逻辑是正确的。我很难理解为什么会出现这种错误,以及如何解决它。我在网上浏览了一下,但是我很难应用到我自己的代码中找到的内容。 这是我第一次使用Stack overflow。欢迎所有建设性的反馈。

   import UIKit

    class Anagram{
        let  word1 :String
        let  word2 :String

        init(word1: String, word2: String){
            self.word1 = word1
            self.word2 = word2
        }
        var characters1 = Array(word1)
        var characters2 = Array(word2)

        characters1 = characters1.sort()
        characters2 = characters2.sort()

        var pos = 0
        var match = true
        while pos < characters2.length && match {
            if characters1[pos] == characters2[pos]:
                pos = pos + 1
            else:
                match = false
        }
        return match

    }
    let theAnagram = Anagram(word1: "abcd", word2: "dcba")

2 个答案:

答案 0 :(得分:1)

首先 - 正如smozgur在评论中所说,你需要使用一个函数来检查它是否是一个字谜。其次,据我所知,Array(String)不再适用于Swift 2.0。为了解决这个问题,我提到了Convert a String to an array of characters swift 2.0。总而言之,我将您的逻辑放入一个函数中并修复了characters(1,2)数组的创建。这就是我如何使用它:

class Anagram{
let  word1 : String
let  word2 : String

init(word1: String, word2: String){
    self.word1 = word1
    self.word2 = word2
}

func checkAnagram () -> Bool {
    var characters1 = Array(word1.characters).sort()
    var characters2 = Array(word2.characters).sort()
    var pos = 0
    var match:Bool = true
    while pos < characters2.count && match {

        if characters1[pos] == characters2[pos] {

            pos++
        }

        else {
            match = false
        }
    }
    return match
}
}

let trueAnagram = Anagram(word1: "abcd", word2: "dcba")

trueAnagram.checkAnagram()
//returns true

let falseAnagram = Anagram(word1: "false", word2: "falze")

falseAnagram.checkAnagram()
//returns false.

旁注:不要使用pos = pos + 1,只需使用pos++

如果这适合您,请检查我的答案。如果没有,请发表评论,我会再次尝试帮助您。

答案 1 :(得分:0)

嗯..

调整您的代码,如下所示。 下面的代码没有错误...

let  word1 :String
let  word2 :String

class Anagram{


        var characters1 = Array(word1)
        var characters2 = Array(word2)
.
.
.
.

我想在你的代码word1中,word2还不存在,因为相同的类属性没有顺序..方法的不太可能的属性