Skip to content

Instantly share code, notes, and snippets.

@botekchristophe
Last active March 17, 2017 20:07
Show Gist options
  • Save botekchristophe/6040656148b67501badb70cd3574c75e to your computer and use it in GitHub Desktop.
Save botekchristophe/6040656148b67501badb70cd3574c75e to your computer and use it in GitHub Desktop.
import scala.collection.mutable.ListBuffer
case class User(firstName: String,
nickName: Option[String] = None,
lastName: String,
happiness: Option[Boolean] = None,
age : Int)
val allUsers: ListBuffer[User] = scala.collection.mutable.ListBuffer.empty[User]
allUsers += User("Calvin", Some("Murican"), "Ference", happiness = Some(false), age = 78)
allUsers += User("Max", Some("Mad"), "Millette-Coulombe", happiness = Some(true), age = 12)
allUsers += User("Johann", lastName = "David", age = 26)
allUsers += User("Dom", Some("Pink Scarf"), "Caron", Some(true), age = 32)
def notOldEnough(user: User): Boolean = {
return user.age < 18
}
def oldEnough(user: User): Boolean = !notOldEnough(user)
def getHelloMessage(user: User): String = {
var helloMessage = ""
if(user.happiness.isDefined) {
var isHappy = user.happiness.get
if (isHappy) {
helloMessage = "We are happy too! have a good day."
} else {
helloMessage = "Have a bad day ! You suck !"
}
} else {
helloMessage = "We have no clue if you are happy but have a good day !"
}
return helloMessage
}
def getFullName(user: User): String = {
var fullName = user.firstName
if(user.nickName.isDefined) {
fullName += s" ${user.nickName.get} "
} else {
fullName += " "
}
fullName += user.lastName
return fullName
}
def printHelloMessage(allUsers: ListBuffer[User], checkAge: Boolean = false): Unit = {
//using a new collection resolve the problem
val filteredUsers = scala.collection.mutable.ListBuffer.empty[User]
for( user <- allUsers ){
if(checkAge) {
if(oldEnough(user)) filteredUsers += user
} else {
filteredUsers += user
}
}
for( user <- filteredUsers ){
var fullName = getFullName(user)
var helloMessage = getHelloMessage(user)
println(s"Hi $fullName ! $helloMessage")
}
//problem highlighted by using the same collection
/*
for( user <- allUsers ){
if(checkAge && notOldEnough(user)) allUsers -= user
}
for( user <- allUsers ){
var fullName = getFullName(user)
var helloMessage = getHelloMessage(user)
println(s"Hi $fullName ! $helloMessage")
}
*/
}
printHelloMessage(allUsers)
printHelloMessage(allUsers, checkAge = true)
printHelloMessage(allUsers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment