我是 Scala 的新手,有时我会在方法签名上苦苦挣扎。让我们来看看这段代码,我对命名参数特别感兴趣,以便对它们进行进一步的操作。
def divide(xs: List[Int]): List[Int] = {
val mid = xs.length/2
(xs take mid, xs drop mid)
}
在这里,我定义了名为“xs”的输入列表,我在很多网页上都看到过这个约定。但是在大学里,我们有另一种方法签名定义方法(我错过了名称,抱歉),其中我们没有命名输入参数,但会发生模式匹配:
def mylength: List[Any] => Int = {
case Nil => 0
case x::xs => mylength(xs)+1
}
在这种情况下,识别输入参数非常简单,因为只有一个参数。如何在上面显示的编码样式中使用与下面代码中相同的样式以及 2 个或更多输入参数?
def myConcat(xs: List[Any], ys: List[Any]) = {
xs ++ ys
}
对不起我的英语不好。我在谷歌上没有找到任何东西,因为我不知道要搜索什么术语......
编辑:我必须坚持一个界面。我举了另一个例子,你可以帮助我。myAppend1 和 myAppend2 的行为方式相同,将一个新元素放在列表的前面。
def myAppend1(xs: List[Any], y: Any): List[Any] = {
y :: xs
}
我的问题现在是我在 myAppend2 中输入的命名...
def myAppend2: List[Any] => Any => List[Any] = {
/* how can i do this here, when no names y/xs are given?*/
}