关于控制流实验的Swift编程语言手册章节

时间:2014-06-03 22:02:28

标签: ios swift

我正在完成本书的第一章,无法弄清楚实验:

  

添加另一个变量以跟踪哪种数字   最大的,以及最大的数字。

这是本书的代码:

let interstingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13, 17],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25, 36],
]
var largest = 0
for (kind, numbers) in interstingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
largest

5 个答案:

答案 0 :(得分:10)

像这样:

let interstingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13, 17],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25, 36],
]
var largest = 0
var largestKind = ""
for (kind, numbers) in interstingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestKind = kind
        }
    }
}
largest
largestKind

答案 1 :(得分:1)

要求跟踪值和类型的问题不仅仅是显示最终答案的类型。 我认为这更接近了:

let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]

var largest = 0
var largestType = [String]()
var largestValues = [Int]()
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestValues.append(largest)
            largestType.append(kind)
        }
    }
}

print(largest)
print(largestType)
print(largestValues)

现在有了元组:

let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]

var largest = 0
var largestValues: [(type: String, value: Int)] = []
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestValues.append(type: kind, value: number)
        }
    }
}

print(largest)
print(largestValues)

答案 2 :(得分:0)

所以基本上你想把kind放在number放在largest的同一时间,例如largestKind。到一个名为{{1}}的变量。

答案 3 :(得分:0)

let interestingNumbers = [
      "Prime": [2, 3, 5, 7, 11, 13],
      "Fibonacci": [1, 1, 2, 3, 5, 8],
      "Square": [1, 4, 9, 16, 25],
]

 var largest = 0
 var largestNumbers = [
     "Prime":0,
     "Fibonacci":0,
     "Square":0,
]


for (kind, numbers) in interestingNumbers {

  for number in numbers {

    if number > largest {
        largest = number
    }

    if(number > largestNumbers[kind]!){
        largestNumbers[kind] = number;
    }
}
}

print(largest)
print(largestNumbers)


Result is:
25
["Fibonacci": 8, "Square": 25, "Prime": 13]

答案 4 :(得分:0)

let interestingNumbers = [ "Prime"     : [2,3,5,7,11,13],
                           "Fibonacci" : [1,1,2,3,5,8,13],
                           "Square"    : [1,4,9,16,25,36],
                         ]

var largest = 0
var largestKind = ""

for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestKind = kind
        }
    } 
}

print(largest, largestKind)

outputs : 36 Sqaure