E4125

E4125#

? 运算符不能与 .. 一起使用。

.. 运算符允许链接返回 Unit 的方法调用。这在方法执行副作用(如修改自身)时特别有用,因为它返回 Unit

如果将 ?.. 结合使用,方法调用将返回 Result[T, E],而不是 Unit,这不符合 .. 运算符的要求。

错误示例#

type A Double derive(Show)

pub fn A::check(self : A) -> Unit! {
  if self._.is_nan() {
    fail!("NaN")
  }
}

pub fn A::div(self : A, other : A) -> A {
  A(self._ / other._)
}

fn main {
  let a : A = 1.0
  let b : A = 2.0
  println(a.div(b)..check?())
}

建议#

使用单点语法调用方法,并将结果存储在变量中。

fn main {
  let a : A = 1.0
  let b : A = 2.0
  println(a.div(b).check?())
}