当前位置: 首页 > 面试题库 >

Swift运算符“ *”在两个Int上引发错误

蓬弘
2023-03-14
问题内容

我在这里有一个非常奇怪的错误,我已经到处搜索,并且尝试了所有建议。没有工作。

scrollView.contentSize.height = 325 * globals.defaults.integer(forKey: "numCards")

二进制运算符’*’不能应用于两个’Int’操作数

WTF迅捷!为什么不?我Ints一直都在繁殖。这 两个Ints
globals.defaults只是的一个实例UserDefaults.standard。我每次都尝试以下相同的错误。

325 * Int(globals.defaults.integer(forKey: "numCards")   //NOPE

Int(325) * Int(globals.defaults.integer(forKey: "numCards"))  //NOPE

if let h = globals.defaults.integer(forKey: "numCards"){
    325 * h  //NOPE, and 'Initializer for conditional binding must have optional type, not Int'
}

let h = globals.defaults.integer(forKey: "numCards") as! Int
325 * h //NOPE, and 'Forced cast of Int of same type as no affect'

325 * 2 //YES!  But no shit...

所有这些“尝试”似乎都在浪费时间,因为我知道这两个事实都是Ints……而且我是正确的。请指教。谢谢!


问题答案:

该错误具有误导性。问题实际上是尝试将Int值分配给CGFloat变量。

这将起作用:

scrollView.contentSize.height = CGFloat(325 * globals.defaults.integer(forKey: "numCards"))

产生误导性错误的原因(由于下面的评论中的Daniel
Hall)是由于编译器选择了需要返回值的*函数而返回的CGFloat。此功能需要两个CGFloat参数。由于提供的两个参数Int不是CGFloat,所以编译器提供了误导性错误:

二进制运算符’*’不能应用于两个’Int’操作数

如果错误更像是:

二进制运算符’*’不能应用于两个’Int’操作数。期望两个“ CGFloat”操作数。



 类似资料:
  • 我在条件运算符的true子句中得到了未定义属性的意外行为: 示例:Javascript: 不停摆弄 预期的行为是获取一个日志条目,上面写着"未定义,而是抛出了一个错误:。怎么会这样,对象被选中,它永远不会执行htis coe路径。一个工作示例是: 不停摆弄

  • 主要内容:1. 算术运算符,2.比较运算符,3.逻辑运算符,4.按位运算符,4.分配运算符,5.范围运算符,6.其它运算符,7.运算符优先级运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Swift内置运算符丰富,它提供以下类型的运算符 - 算术运算符 比较运算符 逻辑运算符 按位运算符 分配运算符 范围运算符 杂项运算符 本教程将逐一解释算术,关系,逻辑,按位,赋值和其他运算符。 1. 算术运算符 下表显示了Swift 4语言支持的所有算术运算符。 假设变量,变量,则 - 运算符 描述

  • 运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 区间运算符 其他运算符 本章节我们将为大家详细介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符及其他运算符。 算术运算符 以下表格列出了 Swift 语言支持的算术运算符,其中变量 A 为 10,变量 B 为 20: 运算符 描述 实例

  • 问题内容: 为什么会产生错误,应如何写? 错误是“找不到<接受提供的参数的重载” 问题答案: 您的三元运算符在那里不工作的 原因 是由于各种中缀运算符的优先级。您可以在此处查看运算符优先级列表。如果您看一下,会发现底部的运算符通常是放置在较大代码段之间的运算符。优先级越高,它将越紧紧抓住左侧(或右侧)的表达式。因此,您通常希望您的运算符具有非常低的关联性,因此在类似以下的表达式中: 该会抢在它两侧

  • 我的语句似乎抛出了语法错误。我已经阅读了语句应该如何编写(以及脚本中的其他语句没有问题),因此我不确定为什么会有问题。 <代码>

  • 问题内容: 我最近从Apple 下载了 Advanced NSOperations 示例应用程序,并找到了此代码… 似乎使用了运算符来代替,但我从未见过。 它是什么? 问题答案: 它是用于语句中模式匹配的运算符。 您可以在这里了解一下如何使用和利用它来提供自己的实现: http://oleb.net/blog/2015/09/swift-pattern-matching/ http://austi