【问题标题】:Binary operator "==" cannot be applied to operands of type (Int, Int, Int, Int) -> Int二元运算符 "==" 不能应用于 (Int, Int, Int, Int) -> Int 类型的操作数
【发布时间】:2017-09-02 02:43:53
【问题描述】:
var a11: Int = 0
var a12: Int = 0
var a21: Int = 0
var a22: Int = 0

var valueDeterminant = a11 * a12 * a21 + a22

func calculateDeterminant(a11: Int, a12: Int, a21: Int, a22: Int) -> Int {
    return valueDeterminant
}


if calculateDeterminant == 0 {
    print("The trasformation is irreversable, due to the fact that the determinant is \(calculateDeterminant)")
 } else if calculateDeterminant == 1 {
    print("The determinant is\(calculateDeterminant) \nThe trasformation is reverable, and it keeps the area")
 } else {
    print("The determinant is \(calculateDeterminant) \nThe transformation is reversable")
}

错误表示二元运算符 == 不能用于 (Int, Int, Int, Int) 的类型。为什么?我该如何解决这个问题? 另外,如果我将返回值更改为 Bool,则会出现另一个错误,说我不能放入返回 Bool 值的 Int 值。

【问题讨论】:

  • 你在比较不同的东西,一个数组到一个单一的值,你为什么认为这会起作用
  • calculateDeterminant 是一个函数——你无法将它与0 进行比较。您可能打算使用适当的a11a12 等值调用函数(然后更改实现,使其实际使用参数而不是valueDeterminant) .
  • 或将 valueDeterminant 设为计算属性 var valueDeterminant: Int { return a11 * a12 * a21 + a22 } 并调用 if valueDeterminant == 0 {
  • 您在提供的代码中还有一些其他的语法错误。 (1) 你不能以你的方式声明 valueDeterminant - 这不是“自上而下”的编程。 (2) 调用calculateDeterminant时,需要传入4个named参数——a11、a12、a21、a22。现在,这些错误将导致您的代码甚至无法构建!
  • valueDeterminant@dfd 的声明有什么问题?

标签: swift int binary-operators


【解决方案1】:

函数是一流的值。您正在将函数 calculateDeterminantInt 进行比较。不支持。调用函数,然后比较整数值。

var a11: Int = 0
var a12: Int = 0
var a21: Int = 0
var a22: Int = 0

var valueDeterminant = a11 * a12 * a21 + a22

func calculateDeterminant() -> Int {
  return a11 * a12 * a21 * a22
}


if calculateDeterminant() == 0 {
  print("The trasformation is irreversable, due to the fact that the determinant is \(calculateDeterminant())")
} else if calculateDeterminant() == 1 {
  print("The determinant is\(calculateDeterminant()) \nThe trasformation is reverable, and it keeps the area")
} else {
  print("The determinant is \(calculateDeterminant()) \nThe transformation is reversable")
}

或者这样定义...

func calculateDeterminant(a11: Int, a12: Int, a21: Int, a22: Int) -> Int {
    return a11 * a12 * a21 * a22
}

...然后这样称呼它。

if (calculateDeterminant(a11: a11, a12: a12, a21: a21, a22: a22) == 0 {...}

【讨论】:

  • 感谢您的回答,现在操场上没有显示任何错误,但是当我调用函数时,我分配给参数的任何值,结果都是 0。为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2015-08-12
相关资源
最近更新 更多