scala测试针对不同类型的值

时间:2015-03-19 18:43:08

标签: scala

抱歉新手问题。是否有与Python代码相同的scala惯用语,我可以测试不同类型的值?

  if value in ['true', True, "1", 1]:
    ret_value = True
  elif value in ['false', False, "0", 0]:
    ret_value = False

2 个答案:

答案 0 :(得分:2)

我不这么认为。它没有多大意义,因为您的value变量具有固定类型。因此,4个可能值中的3个将永远不会工作,并且编译器知道它。

也就是说,如果你有一组相同类型的可能值,你可以随时使用List(1, 2, 3, 4).contains(value)

强类型语言的真正之处在于它会使类别错误不可能!因此,您不需要在防御方面进行编码。

答案 1 :(得分:2)

惯用Scala通常避免使用任何类型的变量,因此大多数Scala程序员都会避免这种情况。不过,它偶尔会出现一次。你可以这样做:

val truthies = Set(true, 1, "1", "true") // Set[Any], a type that would generally be avoided
truthies("true") //true
truthies(1) //true
truthies("foo") //false