【问题标题】:Find the index of a certain value in array using swift使用swift查找数组中某个值的索引
【发布时间】:2015-01-05 03:18:40
【问题描述】:

按照文档化的 swift 手册中报告的说明进行操作 http://swift-ios.co/standard-functions-in-swift/

我找到了提取数组某个值的索引的代码

var languages = ["Swift", "Objective-C"]
find(languages, "Objective-C") == 1
find(languages, "Java") == nil
find([29, 85, 42, 96, 75], 42) == 2

问题是输出值与起始数组的元素类型不同,因为控制台中的输出是(对于最后一行)

Optional(2)

如果我想将 2 设为 IntDouble,该怎么办?

【问题讨论】:

  • 我看不懂标题。你能改变它以消除误导性的“最大值/最小值”吗?你的问题根本不是这个问题。
  • @Mundi 抱歉,我编辑了标题。谢谢。

标签: ios arrays swift indexing


【解决方案1】:

它是Int?(又名Optional<Int>)。您需要从中提取Int。你可以使用if-let语法

if let index = find([29, 85, 42, 96, 75], 42) {
    // index is Int
}

【讨论】:

  • 注意:Optional<Int>Int? 是表达同一事物的不同方式:可选。阅读您的答案,看起来它们是不同的。为了避免混淆,我会明确说明
  • @mstysf 天才!有效!我不明白 find 作为输出给出的导出类型,为什么它不应该与在数组中找到的值的类型一样。还是非常感谢你
  • Optionals 用于处理无情况或错误情况。可选值包含一个值或nil。为了提取它的值,您需要使用if-let 语法或! 运算符来强制解包可选。但是在使用! 运算符时必须小心。如果可选值包含nil,它将使您的程序崩溃。在您的情况下,请考虑一个数组 [1,2,3,4,5] 以及当您调用 find(array, 20) 时会发生什么。因为数组中没有“20”,所以返回nil 是合乎逻辑的。因为find 函数可以返回nil 或一个值,所以返回类型是Int? 而不是Int
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
相关资源
最近更新 更多