Scala新手警报:
基本上我正在尝试做这样的事情:我模式匹配并返回一个字符串.
scala> def processList(list: List[String], m: String): String={list foreach (x=> m match{
| case "test" => "we got test"
| case "test1"=> "we got test1"})}
Run Code Online (Sandbox Code Playgroud)
:10:错误:类型不匹配; found:需要的单位:String def processList(list:List [String],m:String):String = {list foreach(x => m match {
我知道我可以设置一个var并在for comp之后返回它...但这似乎不是Scala方式.
我不完全清楚你要做的究竟是什么.您是否只想测试列表中是否存在某个元素?或者您想要返回一些带有转换的字符串列表?例如,后者可以这样写:
scala> def processList(l: List[String]): List[String] = l map {s => s match {
case "test" => "we got test"
case "test1" => "we got test1"
case _ => "we got something else"
}
}
scala> processList(List("test", "test1", "test2", "test3"))
res: List[String] = List(we got test, we got test1, we got something else, we got something else)
Run Code Online (Sandbox Code Playgroud)
对于前者,你可以这样写:
scala> def exists(l: List[String], m: String): String = {
if (l exists (s => s == m))
m + " exists"
else
m + " does not exist"
}
exists: (l: List[String],m: String)String
scala> val l = List("test1", "test2", "test3")
l: List[java.lang.String] = List(test1, test2, test3)
scala> exists(l, "test1")
res0: String = test1 exists
scala> exists(l, "test2")
res1: String = test2 exists
scala> exists(l, "test8")
res2: String = test8 does not exist
Run Code Online (Sandbox Code Playgroud)
在任何情况下:List上的foreach方法遍历列表中的每个元素,将给定的函数应用于每个元素.它主要用于副作用,例如将某些内容打印到控制台或写入文件.传递给foreach方法的函数必须返回Unit类型,就像Java中的void一样.因此,您无法从中返回单个String.
| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |