E0027

E0027#

语法已弃用。请参考警告消息,了解原因和潜在修复方法。

例如,其中一种已废弃的用法是将构造函数用作函数。相反,应使用部分应用来从构造函数创建一个函数。

错误示例#

enum Message {
  Add(String)
} derive(Show)

fn perform[T](message : (T) -> Message, produce : () -> T) -> Message {
  //
  // Warning: The syntax fn f[..] for declaring polymorphic function is 
  // deprecated. Use fn[..] f instead.
  message(produce())
}

fn main {
  println(perform(Add, fn() { "Hello, world!" }))
  //              ^^^
  // Warning: Using constructor as function directly is
  // deprecated. Use the partial application syntax instead
}

建议#

根据警告信息迁移代码。在这种情况下,应将代码修改为使用部分应用语法。

///|
enum Message {
  Add(String)
} derive(Show)

///|
fn[T] perform(message : (T) -> Message, produce : () -> T) -> Message {
  message(produce())
}

///|
fn main {
  println(perform(Add(_), fn() { "Hello, world!" }))
}