gpt4 book ai didi

scala - 如何组合两个函数?

转载 作者:行者123 更新时间:2023-12-04 00:33:19 25 4
gpt4 key购买 nike

我有两个函数,我正在尝试组合它:

  private def convert(value: String)
: Path = decode[Path](value) match {


private def verify(parsed: Path)
: Path = parsed.os match {

我试过如下:

verify compose convert _

编译器报错:

[error] Unapplied methods are only converted to functions when a function type is expected.
[error] You can make this conversion explicit by writing `verify _` or `verify(_)` instead of `verify`.
[error] verify compose convert _
[error] ^
[error] one error found

我正在努力完成以下任务:

  def process(value: String)
: Path =
verify(convert(value))

我做错了什么?

最佳答案

问题不是 scala 中的所有东西都是函数。 convertverify 在你的例子中是方法而不是函数。

1) 如果你想组合函数,定义为函数如下,

函数,

scala> def convert: String => String = (value: String) => "converted"
convert: String => String

scala> def verify = (value: String) => if(value == "converted") "valid" else "invalid"
verify: String => String

编写 fns

scala> def vc = verify compose convert
vc: String => String

将 fn 组合应用于仿函数

scala> Some("my-data").map{ vc.apply }
res29: Option[String] = Some(valid)

2) 另一种方法是将您现有的方法转换为如下函数,

scala> def vc = (verify _ compose (convert _))
vc: String => String

scala> Some("data to convert").map { vc.apply }
res36: Option[String] = Some(valid)

引用资料

https://twitter.github.io/scala_school/pattern-matching-and-functional-composition.html

Chapter 21 - Functions/Function literals

Function composition of methods, functions, and partially applied functions in Scala

关于scala - 如何组合两个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com