抱歉新手问题。是否有与Python代码相同的scala惯用语,我可以测试不同类型的值?
if value in ['true', True, "1", 1]:
ret_value = True
elif value in ['false', False, "0", 0]:
ret_value = False
答案 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