【问题标题】:How to change [int] to int in Swift如何在 Swift 中将 [int] 更改为 int
【发布时间】:2016-10-18 20:18:09
【问题描述】:

我试图测试一个数字是否可以被一组数字平均划分。这是我的代码:

var arr = [2, 3, 4, 5, 6, 7, 8, 9]

var text = Int(textField.text!)!

if text % arr === 0 {
}

我想要做的是将变量“文本”除以 2、3、4、5、6、7、8 和 9(如果它可以被任何整除,则执行操作)但我不确定如何获取数组的值。而且我不想这样做:

if text % 2 == 0 || text % 3 == 0 || text % 4 == 0

等等……

【问题讨论】:

  • 您可以为此创建枚举块。

标签: arrays swift integer


【解决方案1】:
for divider in arr {
  if text % divider == 0 {
    // ... 
    break
  }
}

【讨论】:

  • 哈哈:) 同时:)
  • 看起来和我一样的答案:),所以我会删除我的答案
  • @Mr_Username 的代码存在一些问题,此答案未解决。此外,像这样循环数组并在找到元素时使用 break 远非在 Swift 中实现此行为的惯用方式。但它会起作用。
  • 我认为您将break 替换为continue,这样您在满足条件时就不会中断循环。
  • 好的,那么我首先看不到 for 循环的必要性。只需使用.Contains() 代替......就像@overactor 在他的回答中建议的那样。
【解决方案2】:

你试过这个吗?

for value in arr {
     if text % value == 0 {
          // do some action
          break
     }
}

【讨论】:

    【解决方案3】:
    for i in arr {
      if text % i == 0
      {
      }
    }
    

    【讨论】:

      【解决方案4】:

      执行此操作的一种 Swifty 方法是使用 if let 解包可选项,然后使用内置的 contains 函数查看数组是否包含满足谓词的元素。

      let arr = [2, 3, 4, 5, 6, 7, 8, 9]
      if let text = textField.text, number = Int(text) {    
          if arr.contains({ number % $0 == 0 }) {
              ...
          }
      }
      

      【讨论】:

      • 是的,这是解决问题的最佳方案。
      猜你喜欢
      • 1970-01-01
      • 2023-02-08
      • 2012-10-19
      • 2019-09-16
      • 2019-07-15
      • 2018-02-04
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多