import scala.collection.mutable.ArrayBuffer
object nameList {
val names = ArrayBuffer("placeholder")
}
class Robot {
val r = scala.util.Random
val letters = 'A' to 'Z'
val name = {
val initName = nameList.names(0)
while(nameList.names.contains(initName)){
val initName = letters(r.nextInt(26)).toString + letters(r.nextInt(26)).toString + r.nextInt(10).toString + r.nextInt(10).toString + r.nextInt(10).toString
println("while", initName)
println("while", nameList.names)
println("checker", nameList.names.contains(initName))
}
println("outside", nameList.names)
nameList.names += initName
initName
}
}
выходыСкала бесконечное время цикла, даже если условие изменено на ложной
(while,LA079)
(while,ArrayBuffer(placeholder))
(checker,false)
(while,IO176)
(while,ArrayBuffer(placeholder))
(checker,false)
прогонов пока петля на неопределенный срок, выше выходной фрагмент кода. Почему нет цикла while, хотя условие изменено на false?
Большое изображение, мне нужно убедиться, что у каждого экземпляра Robot
есть уникальный name
- Я открыт для альтернатив использованию цикла while.
Обновление: за Джейсоном C, ниже код исправляет проблему: по смене
var initName = nameList.names(0)
while(nameList.names.contains(initName) == true){
initName = letters(r.nextInt(26)).toString + letters(r.nextInt(26)).toString + r.nextInt(10).toString + r.nextInt(10).toString + r.nextInt(10).toString
Вы переопределили initName - один теней другой. –
'initName' является' val'. Он не может и не меняется. 'InitName' внутри цикла while while является другой переменной. – jwvh
Спасибо, ребята. –