我遇到了一种难以理解的情况。我有一个字符串数组,然后反转,但它打印相同的数组,而不是反转...
比较时,编译器说它们不相等
下面是代码...
请帮助我理解这种现象
<scroll-view-test ScrollViewName="scrollView"
ScrollViewContentHeight="100%"></scroll-view-test>
<style>
.photo {
display: inline-block;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
width: inherit;
height: inherit;
}
.photo1 {
background-image: url("https://www.woodlandtrust.org.uk/media/100078482/Sycamore01.jpg?cb=-11897985&preset=gallery-tab-main-image");
}
.photo2 {
background-image: url("https://statesymbolsusa.org/sites/statesymbolsusa.org/files/styles/symbol_thumbnail__medium/public/primary-images/Applesfreshpicked.jpg?itok=YmYkBfY7");
}
</style>
我期望输出是 [“ Paul”,“ Joy”,“ Andy”]之后
let names = ["Andy", "Joy", "Paul"]
print(names) // Prints ["Andy", "Joy", "Paul"]
print(names.reversed())
//Prints ReversedCollection<Array<String>>(_base: ["Andy", "Joy", "Paul"])`
//Prints Not equal
if names == names.reversed() {
print("Equal")
} else {
print("Not Equal")
}
答案 0 :(得分:2)
对reversed()
的调用不会修改数组。它将视图返回到原始数组。
调用print(names.reversed())
时,它会打印该反向列表,但是names
本身保持不变。
names == names.reversed()
唯一正确的时间是该数组为空还是“回文”数组。
还要记住,您已将names
声明为常量(使用let
),因此应该很好地暗示names
未被修改。
您可以创建一个新数组:
let reversedNames = names.reversed()
该新数组将具有相反的值。
答案 1 :(得分:0)
答案 2 :(得分:0)
如Apple文档所述
https://developer.apple.com/documentation/swift/array/1690025-reversed
您可以调用此reversed()方法来反转集合,而无需为其元素分配新的空间。 ReversedCollection实例包装基础集合,并以相反的顺序提供对其元素的访问。本示例以相反的顺序打印字符串的字符:
let word = "Backwards" for char in word.reversed() { print(char, terminator: "") } // Prints "sdrawkcaB"
如果您需要相同类型的反向集合,则可以使用该集合的基于序列的或基于集合的初始化器。例如,要获取字符串的反向版本,请反向其字符并从结果中初始化一个新的String实例。
let reversedWord = String(word.reversed()) print(reversedWord) // Prints "sdrawkcaB"
根据您的情况,您需要创建一个如下所示的新实例
let reversedArray = names.reversed()
print(reversedArray)
// Prints ["Paul", "Joy", "Andy"]
答案 3 :(得分:0)
写完后
print(names.reversed())
// Prints ReversedCollection>(_ base:[“ Andy”,“ Joy”,“ Paul”])`
1)。您的数组被颠倒了,但是没有存储在名称中,因此名称保持不变。
2)。当您在打印时反转数组时,将显示ReversedCollection,以便反转集合,但现在不存储它,因此仅管理反向数组的内部。
如果您将其存储在某个对象中,则打印该对象,然后显示反转。
like:
let reversedName = names.reversed()
print(reversedName)
所以它是反向打印数组。