String 通过多个可能的组进行Scala字符串模式匹配
给定一个输入String 通过多个可能的组进行Scala字符串模式匹配,string,scala,pattern-matching,scala-collections,String,Scala,Pattern Matching,Scala Collections,给定一个输入映射[String,String],例如 val in = Map("name1" -> "description1", "name2.name22" -> "description 22", "name3.name33.name333" -> "description 333") 提取每个名称和每个描述并将它们输入到方法(例如)中的简单方法是什么 def proce
映射[String,String]
,例如
val in = Map("name1" -> "description1",
"name2.name22" -> "description 22",
"name3.name33.name333" -> "description 333")
提取每个名称和每个描述并将它们输入到方法(例如)中的简单方法是什么
def process(description: String, name: String*): Unit = name match {
case Seq(n) => // find(n).set(description)
case Seq(n,m) => // find(n).find(m).set(description)
case Seq(n,m,o) => // find(n).find(m).find(o).set(description)
case _ => // possible error reporting
}
非常感谢您可以使用splat操作员
\u*
:
val in = Map("name1" -> "description1",
"name2.name22" -> "description 22",
"name3.name33.name333" -> "description 333")
def process(description: String, name: String*) = ???
in.map { x =>
process(x._2, x._1.split("\\."): _*)
}
请注意,*
参数必须位于函数签名的最后一位(否则编译器将无法决定停止的位置)
从REP:
scala> def process(description: String, name: String*) = {
| name.foreach(println)
| println(description)
| }
process: (description: String, name: String*)Unit
scala> in.map { x =>
| process(x._2, x._1.split("\\."): _*)
| }
name1
description1
name2
name22
description 22
name3
name33
name333
description 333
您可以使用splat运算符
\u*
:
val in = Map("name1" -> "description1",
"name2.name22" -> "description 22",
"name3.name33.name333" -> "description 333")
def process(description: String, name: String*) = ???
in.map { x =>
process(x._2, x._1.split("\\."): _*)
}
请注意,*
参数必须位于函数签名的最后一位(否则编译器将无法决定停止的位置)
从REP:
scala> def process(description: String, name: String*) = {
| name.foreach(println)
| println(description)
| }
process: (description: String, name: String*)Unit
scala> in.map { x =>
| process(x._2, x._1.split("\\."): _*)
| }
name1
description1
name2
name22
description 22
name3
name33
name333
description 333
您可以使用splat运算符
\u*
:
val in = Map("name1" -> "description1",
"name2.name22" -> "description 22",
"name3.name33.name333" -> "description 333")
def process(description: String, name: String*) = ???
in.map { x =>
process(x._2, x._1.split("\\."): _*)
}
请注意,*
参数必须位于函数签名的最后一位(否则编译器将无法决定停止的位置)
从REP:
scala> def process(description: String, name: String*) = {
| name.foreach(println)
| println(description)
| }
process: (description: String, name: String*)Unit
scala> in.map { x =>
| process(x._2, x._1.split("\\."): _*)
| }
name1
description1
name2
name22
description 22
name3
name33
name333
description 333
您可以使用splat运算符
\u*
:
val in = Map("name1" -> "description1",
"name2.name22" -> "description 22",
"name3.name33.name333" -> "description 333")
def process(description: String, name: String*) = ???
in.map { x =>
process(x._2, x._1.split("\\."): _*)
}
请注意,*
参数必须位于函数签名的最后一位(否则编译器将无法决定停止的位置)
从REP:
scala> def process(description: String, name: String*) = {
| name.foreach(println)
| println(description)
| }
process: (description: String, name: String*)Unit
scala> in.map { x =>
| process(x._2, x._1.split("\\."): _*)
| }
name1
description1
name2
name22
description 22
name3
name33
name333
description 333
您可以执行以下操作:
在foreach{case(ns,d)=>进程(d,ns.split(\\):\*}
您可以执行以下操作:
在foreach{case(ns,d)=>进程(d,ns.split(\\):\*}
您可以执行以下操作:
在foreach{case(ns,d)=>进程(d,ns.split(\\):\*}
您可以执行以下操作:
在foreach{case(ns,d)=>进程(d,ns.split(\\):\*}
我猜您的意思是def process(tuple:(String,String)*)
或def process(description:String,name:String)
,您可以逐个处理每个条目,也可以一次处理所有条目(这意味着不止一个描述)。@applicius一次处理一个映射条目,键排列。返回类型是什么?@applicius note更新问题:)我猜你的意思是def process(tuple:(String,String)*)
或def process(description:String,name:String)
,你可以逐个处理每个条目,也可以一次处理所有条目(这意味着不止一个描述)@applicius一次一个映射条目,键排列。返回类型是什么?@applicius注释更新问题:)我猜您的意思是def进程(tuple:(String,String)*)
或def进程(description:String,name:String)
,因为您可以逐个处理每个条目,也可以一次处理所有条目(这意味着不止一个1描述)。@applicius一次一个映射条目,键排列。返回类型是什么?@applicius注释更新问题:)我猜你的意思是def process(tuple:(String,String)*)
或def process(description:String,name:String)
,因为你可以逐个处理每个条目,或者一次处理所有条目(这意味着不止一个1描述)。@applicius一次处理一个映射条目,键排列。返回类型是什么?@applicius注释更新有问题:)