小编Gav*_*vin的帖子

使用Scala中的占位符替换字符串中的值

我刚开始使用Scala,希望更好地理解解决问题的功能方法.我有一对字符串,第一个字符串有参数的占位符,它的对有要替换的值.例如"从tab1中选择col1,其中id> $ 1,名称如$ 2""参数:$ 1 ='250',$ 2 ='some%'"

可能有多于2个参数.

我可以通过逐步执行并在每一行上使用regex.findAllIn(line)构建正确的字符串,然后通过迭代器来构造替换,但这似乎相当不优雅且程序驱动.

任何人都可以指出我的功能方法更整洁,更不容易出错吗?

functional-programming scala

17
推荐指数
2
解决办法
1万
查看次数

过滤scalaz析取右侧的值

我有一个结果包含一个scalaz析取中的向量列表,我希望能够从右侧检查和过滤掉元素.

简化示例:

import scalaz._
import Scalaz._

type TL = Throwable \/ List[Vector[Int]]

val goodTL: TL = \/-(List(Vector(1,2,3),Vector(), Vector(2,3,4)))
Run Code Online (Sandbox Code Playgroud)

如果我想从填充的元素中删除空元素以及任何值!= 2,我可以执行以下操作:

for {
  v <- goodTL
  f = v.flatten
} yield for {
  i <- f
  if i != 2
} yield i
Run Code Online (Sandbox Code Playgroud)

给出一个scalaz.\/[Nothing,List[Int]] = \/-(List(1, 3, 3, 4))我想要的东西,但我想知道是否有一个不太复杂的方法来实现这一目标.

scala scalaz

5
推荐指数
1
解决办法
352
查看次数

Scala在匹配case语句中使用正则表达式或语法

驾驶室有人告诉我为什么这不起作用以及如何解决?

val aorb = "(a|b)".r

aorb.findFirstIn("with a ")
res103: Option[String] = Some(a)

"with a " match { case aorb() => "have a or b" case _ => "None"}
res102: String = None
Run Code Online (Sandbox Code Playgroud)

我希望匹配声明返回"有a或b"

实际问题是在输入的更复杂的正则表达式上尝试一系列匹配,并在第一个成功模式上返回一个值.

scala

3
推荐指数
2
解决办法
2976
查看次数

获取列表成员之间的差异

我有一个值列表,并希望将其减少到连续成员之间的差异列表.有没有比我想出的更好的方法(琐碎的例子)?

val l1 = List(1,2,3,4,5,6)

val diffs = (l1 zip l1.drop(1)).map{case (x,y) => y - x}.sum
Run Code Online (Sandbox Code Playgroud)

collections scala

3
推荐指数
2
解决办法
1892
查看次数