无参数scala uanpply
我是一名在韩国学习Scala的学生。我正在学习模式匹配和应用方法。我感到困惑的是,Emergency对象在unapply方法中有一个参数。当我没有将参数放入匹配块时,我不知道原因无参数scala uanpply,scala,parameters,unapply,Scala,Parameters,Unapply,我是一名在韩国学习Scala的学生。我正在学习模式匹配和应用方法。我感到困惑的是,Emergency对象在unapply方法中有一个参数。当我没有将参数放入匹配块时,我不知道原因 object Solution { def main(args: Array[String]) { val number1 = "010-123-1234" val number2 = "119" val number3 = "포도먹은 돼지" val numberList =
object Solution {
def main(args: Array[String]) {
val number1 = "010-123-1234"
val number2 = "119"
val number3 = "포도먹은 돼지"
val numberList = List(number1, number2, number3)
for (number <- numberList) {
number match {
case Emergency() => println("긴급전화다")
case Normal(number) => println("일반 전화다" + number)
case _ => println("판단할 수 없습니다.")
}
}
}
}
object Emergency {
def unapply(number: String): Boolean = {
if (number.length == 3 && number.forall(_.isDigit)) true
else false
}
}
object Normal {
def unapply(number: String): Option[Int] = {
try {
Some(number.replaceAll("-", "").toInt)
} catch {
case _: Throwable => None
}
}
}
对象解决方案{
def main(参数:数组[字符串]){
val number1=“010-123-1234”
val number2=“119”
val编号3=”포도먹은 돼지"
val numberList=列表(编号1、编号2、编号3)
对于(数字println(“긴급전화다")
大小写正常(数字)=>println(“일반 전화다“+数字)
案例=>println(“판단할 수 없습니다.")
}
}
}
}
物体紧急情况{
def unapply(编号:字符串):布尔={
如果(number.length==3&&number.forall(u.isDigit))true
否则错误
}
}
对象法线{
取消应用def(编号:字符串):选项[Int]={
试一试{
部分(number.replaceAll(“-”,“).toInt)
}抓住{
案例:可丢弃=>无
}
}
}
请注意,tounapply
方法的返回类型是不同的
Normal.unapply
返回一个选项
。当执行case Normal(foo)
时,调用unapply
,如果它返回Some(number)
,则匹配成功,number
被分配给局部变量foo
,如果它返回None
,匹配失败
Emergency.unapply
返回一个Boolean
,因此case Emergency()
如果返回true
,则成功,否则失败,但在成功的情况下没有可分配的结果,因此没有“参数”。请注意,unapply方法的返回类型不同
Normal.unapply
返回一个选项
。当执行case Normal(foo)
时,调用unapply
,如果它返回Some(number)
,则匹配成功,number
被分配给局部变量foo
,如果它返回None
,匹配失败
Emergency.unapply
返回一个Boolean
,因此case Emergency()
如果返回true
,则会成功,否则会失败,但如果成功,则没有可分配的结果,因此没有“参数”。unapply中的参数就是您要匹配的对象
在这种情况下,number
字符串变量被传递到Emergency.unapply
、Normal.unapply
等
这个链接很好地解释了这一点:
unapply中的参数是要匹配的对象 在这种情况下,
number
字符串变量被传递到Emergency.unapply
、Normal.unapply
等
这个链接很好地解释了这一点:
我理解。我困惑的是紧急对象在unapply方法中有一个参数。但是为什么没有参数它会工作上面的答案解释了这一点。我理解。我困惑的是紧急对象在unapply方法中有一个参数。但是为什么没有参数它会工作答案上面解释了这一点。对不起,我得到了正常部分,但“如果成功,则无需分配结果”意味着什么??这是否意味着如果我有返回值,我必须将参数放入??布尔值也是一个返回值。我是否认为它错了??
Normal(foo)
返回一个Int
,分配给foo
Emergency()
不需要参数:true
与case子句匹配,false
不匹配。对不起,我得到了正常部分,但“如果成功,则无需分配结果”“意味着??这是否意味着如果我有一个返回值,我必须将参数放入??布尔值也是一个返回值。我是否认为这是错误的???Normal(foo)
返回一个Int
,该值被分配给foo
Emergency()
不需要参数:true
与case子句匹配,false
不匹配。