[英]Scala How to transform Seq[((A, B, C, D), Seq[(E, F, G)])] to Seq[(A, B, C, D, Seq[(E, F, G)])]?
[英]def compose[A,B,C](f: B => C, g: A => B): A => C = {f(g(_))} is noty valid scala declaration?
我是scala的新手,這可能是一個輕而易舉的概念,但試圖了解原因
def compose[A,B,C](f: B => C, g: A => B): A => C = {f(g(_))}
是不是有效的scala decation?
嘗試
def compose[A,B,C](f: B => C, g: A => B): A => C = { a: A => f(g(a)) }
下划線-占位符語法不一致,尤其是在像您在此處的嵌套函數調用中不起作用。 一條好的經驗法則是,如果下划線語法有誤,請嘗試將其擴展為顯式lambda,然后查看其是否有效。
因為f(g(_))
在Scala中表示f(x => g(x))
,而不是x => f(g(x))
。
您需要為接收函數g的變量分配一個名稱:
def compose[A,B,C](f: B => C, g: A => B): A => C = {x => f(g(x))}
您還可以執行以下操作(我已將函數名重命名以使其與眾不同):
def myCompose[A,B,C](f: B => C, g: A => B): A => C = f compose g
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.