Scala:AnyVal用法

时间:2016-04-27 10:21:51

标签: scala

我使用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 ,但这似乎是错误的做法。

1 个答案:

答案 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