我使用val
语句在Scala中设置if
,我只想在满足某些条件时设置val
,我希望它是{{1} }}。我稍后使用/比较Int
与另一个(目前)始终为正的val
:
Int
我不喜欢这段代码,因为将来val transpose = if(x < y) 10 else -1
...
if(transpose > min) doSomething
实际上可能是否定的。
我已将min
语句更改为:
if
返回类型val transpose = if(x < y) 10
。我想知道如何利用它?我仍然希望将AnyVal
中的值与AnyVal
进行比较,但前提是min
,否则,我想继续,好像Int
语句不成功。在伪代码中:
if
我玩过if(transpose instanceOf(Int) && transpose > min) doSomething
,但这似乎是错误的做法。
答案 0 :(得分:3)
根据Ende Neu:
的建议使用Option
val transpose = if(x < y) Some(10) else None
if(transpose.exists(_ > min)) doSomething
或者,只需使用Int.MinValue
:
val transpose = if(x < y) 10 else Int.MinValue
if(transpose > min) doSomething // won't doSometihng for any "min" if x < y
另一个不错的选择是使transpose
成为Int => Boolean
类型的函数(假设它仅用于此if语句),因此不需要类型代表门槛:
val transpose: Int => Boolean = m => if (x < y) 10 > m else false
if(transpose(min)) doSomething