任何人都可以1行这个Scala代码(最好用FP吗?)

时间:2013-11-21 21:02:35

标签: scala functional-programming

Sup y'all。下面感觉像是Scala的悲剧性浪费。任何人都可以保存此代码吗?

    val tokenSplit = token.split(":")(1)
    val candidateEntityName = tokenSplit.substring(0,tokenSplit.length-1)
    if(!candidateEntityName.equals(entityName)) removeEnd = true

3 个答案:

答案 0 :(得分:2)

应该像:(未经测试)

val removeEnd = !(token.split(":")(1).dropRight(1).equals(entityName))

或:

val removeEnd = !(token.split(":").last.dropRight(1).equals(entityName))

答案 1 :(得分:2)

使用正则表达式匹配输入的不同解决方案。它还处理数据不符合预期的情况(您当然可以扩展您的正则表达式以满足您的需求)。

val removeEnd = """<(\w+):(\w+)>""".r.findFirstMatchIn(token).map(!_.group(2).equals(entityName)).getOrElse(throw new Exception(s"Can't parse input: $token"))

如果您想默认为false:

val removeEnd = """<(\w+):(\w+)>""".r.findFirstMatchIn(token).exists(!_.group(2).equals(entityName))

答案 2 :(得分:2)

这是(您不需要使用equals):

val removeEnd = token.split(":")(1).init != entityName