Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 通过多个可能的组进行Scala字符串模式匹配_String_Scala_Pattern Matching_Scala Collections - Fatal编程技术网

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注释更新有问题:)