def checkHappynumber(n: Int): Boolean = {
val set = scala.collection.mutable.HashSet[Int]()
var num: Int = n
while(num != 1) {
var newnum: Int = 0
while (num != 0) {
newnum = (num % 10) * (num % 10)
num /= 10
}
if(!set.add(newnum)){
return false;
}
num = newnum
}
return true
}
什么是 ”!” 在那里的作用?if(!set.add(newnum))? 我知道 hashset 不能有重復值。唯一的問題是如何“!” 在這里作業。
uj5u.com熱心網友回復:
!是一個否定運算子(!true是false,!false是true)。如果集合中不存在元素(成功添加),則HashSet.add回傳,否則。如果元素已經存在于哈希集中(嘗試第二次添加它),則此代碼回傳。truefalsefalse
這是方法的檔案add。
uj5u.com熱心網友回復:
在 Scala中,!foo是. 換句話說,就是呼叫被命名的方法,就像呼叫方法一樣。在這方面沒有什么特別的。foo.unary_!!foounary_!foo.barbarunary_!
在您的情況下,這意味著這!set.add(newnum)只是set.add(newnum).unary_!.
與所有其他方法一樣,如果您想知道該方法的作用,您首先需要找到它的定義位置。scala.collection.mutable.Set.add在這種情況下, is的回傳型別scala.Boolean表示被呼叫的特定方法 is scala.Boolean.unary_!,其定義如下:
def unary_!: Boolean否定布爾運算式。
!a結果false當且僅當a評估為trueand!a結果true當且僅當a計算結果為false.回傳:否定運算式
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496931.html
標籤:斯卡拉
