E4101

E4101#

管道运算符右侧不支持该表达式。

该错误发生在管道运算符右侧的表达式不是一个支持的形式。管道运算符允许您以更易读的方式链式调用函数,但它的右侧只支持特定的形式。

管道运算符右侧允许以下形式:

  1. 一个标识符(函数名)

  2. 一个普通的函数应用(但不是方法调用)

  3. 构造函数名

  4. 构造函数应用

错误示例#

///|
pub struct T(Int)

///|
pub fn make(x : Int) -> T {
  T(x)
}

///|
fn T::m(self : T, x : Int) -> Unit {
  println(self.0 + x)
}

///|
pub fn f(t : T, x : Int) -> Unit {
  x |> t.m()
  //     ^^^^ Error: Unsupported expression after the pipe operator.
}

建议#

要修复此错误,您可以将无效的管道表达式改为普通的函数或方法应用。

///|
pub struct T(Int)

///|
pub fn make(x : Int) -> T {
  T(x)
}

///|
fn T::m(self : T, x : Int) -> Unit {
  println(self.0 + x)
}

///|
pub fn f(t : T, x : Int) -> Unit {
  (fn(x : Int) { println(x) })(x)
  t.m(x)
}