Created
November 16, 2015 05:42
-
-
Save Centaur/50c26b983aa78fc78f71 to your computer and use it in GitHub Desktop.
Idiomatic Scala
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object Yadsun { | |
trait SubColumnStatus | |
case object Disabled extends SubColumnStatus | |
case object Enabled extends SubColumnStatus | |
type SubColumns = Map[String, SubColumnStatus] | |
case class SysColumn(columnId: Int, columnText: String, subColumns: SubColumns) { | |
def addSubColumn(text: String) = commonOp(text)(_ => subColumns, txt => subColumns.updated(txt, Enabled)) | |
def removeSubColumn(text: String) = commonOp(text)(txt => subColumns - txt, _ => subColumns) | |
def disableSubColumn(text: String) = commonOp(text)(txt => subColumns.updated(txt, Disabled), _ => subColumns) | |
def enableSubColumn(text: String) = commonOp(text)(txt => subColumns.updated(txt, Enabled), _ => subColumns) | |
private def commonOp(text: String)(ifContains: String => SubColumns, notContains: String => SubColumns) = { | |
val newSubColumns = if (subColumns.contains(text)) ifContains(text) else notContains(text) | |
this.copy(subColumns = newSubColumns) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment