Skip to content

Instantly share code, notes, and snippets.

@asarkar
asarkar / pattern.scala
Created June 10, 2015 08:41
Scala Pattern Matching Demo
sealed abstract class BinaryTree
case class BinTreeLeaf(value: Int) extends BinaryTree
case class BinTreeNode(left: BinaryTree, right: BinaryTree) extends BinaryTree
def leafSum(tree: BinaryTree): Int = tree match {
case node: BinTreeNode => leafSum(node.left) + leafSum(node.right)
case leaf: BinTreeLeaf => leaf.value
}
"Method leafSum" should "traverse a binary tree in order" in {
@asarkar
asarkar / Mixin.scala
Created June 10, 2015 07:25
Scala Mixin Demo
trait Logged { def log(msg: String) {} }
trait Chattery extends Logged { def chatter = log("I chatter. Do you mind?") }
trait ConsoleLogger extends Logged { override def log(msg: String) = println(msg) }
scala> val ch = new Chattery() with ConsoleLogger
ch: Chattery with ConsoleLogger = $anon$1@1ef7fe8e
scala> ch.chatter
@asarkar
asarkar / Employee.java
Last active August 29, 2015 14:22
Scala Collections Demo
public class Employee {
private Address addr;
private int age;
// Getters and setters
}
class Address {
private String streetAddr1;
private String streetAddr2;
@asarkar
asarkar / Fraction.java
Created June 9, 2015 06:43
Scala Closure Demo
public class Fraction {
private final int num;
private final int denom;
public Fraction(int num, int denom) {
this.num = num;
this.denom = denom;
}
public int getNum() {