我最近开始了一个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")
答案 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还不存在,因为相同的类属性没有顺序..方法的不太可能的属性