| 
Scala example source code file (misc.scala)
 The Scala misc.scala source code
object Test {
  def fac(n: Int): Int = if (n < 2) 1 else fac(n - 1) * n;
  // Fibonacci
  def fib(n: Int): Int = if (n < 2) 1 else fib(n - 1) + fib(n - 2);
  def show_fib(n: Int): Int = {
    Console.print("### fib(");
    Console.print(n);
    Console.print(") = ");
    Console.flush;
    val v = fib(n);
    Console.print(v);
    Console.println;
    Console.flush;
    v
  }
  def id[X](x: X): X = x;
  def apply[X](f: X => X, x: X): X = f(x);
  def id_obj(x: AnyRef): AnyRef = x;
  def apply_obj(f: AnyRef => AnyRef, x: AnyRef): AnyRef = f(x);
  def id_any(x: scala.Any): scala.Any = x;
  def apply_any(f: scala.Any => scala.Any, x: scala.Any): scala.Any = f(x);
  def id_int(x: Int): Int = x;
  def apply_int(f: Int => Int, x: Int): Int = f(x);
  class MyClass() {
    override def toString() = "=== MyClass::toString ===";
    def test() = Console.println("=== MyClass::test ===");
  }
  class MySubclass() extends MyClass() {
    override def toString() = "=== MySubclass::toString ===";
  }
  def foobar = {
    42;
    42l;
    23.5f;
    23.5;
    "Hello";
    32 + 45;
    // !!! System
    // java; // !!! why is this legal ? what  does it return ?
    // java.lang;
    //System.out;
    Console.println("### Hello");
    Console.print("### ");
    Console.println(17);
    Console.println("### Bye");
    Console.println;
    val x = 13;
    x;
    // !!! why are DefDef replaced by Block(Tree[0])? we should use Empty!    
    def f = 19;
    f;
    def f0() = 11;
    f0();
    def f1(x: Int) = x;
    f1(7);
    def f2(x: Int, y: Int) = x + y;
    f2(3,5);
    def f11(x: Int)(y: Int) = x + y;
    f11(23)(2);
    1 < 2;
    if (1 < 2) 3 else 4;
    show_fib(0);
    show_fib(1);
    show_fib(2);
    show_fib(3);
    show_fib(4);
    // !!! show_fib(id[Int](4));
/*
    show_fib(5);
    show_fib(6);
    show_fib(7);
    show_fib(8);
    show_fib(9);
    show_fib(10);
    show_fib(11);
    show_fib(12);
*/
    val myObj = new MyClass();
    Console.println(myObj);
    val mySub = new MySubclass();
    Console.println(mySub);
    myObj.test();
    Console.println;
    Console.println(apply_any(id_any, "identity").toString());
    Console.println;
  };
  foobar;
//############################################################################
class A(a: Int) {
  def getA = a;
}
class B(b: Int, c: Int) extends A(b + c) {
  def getB = b;
}
class X(x: Int) {
  def getX = x;
}
case class Y(y: Int, z: Int) extends X(y + z) {
  def getY = y;
  def getAA = this.y;
}
{
  val a: A = new A(1);
  val b: B = new B(2,3);
  val x: X = new X(4);
  val y: Y = new Y(5,6);
  Console.println("A.a = " + a.getA);
  Console.println("B.a = " + b.getA);
  Console.println("B.b = " + b.getB);
  Console.println;
  Console.println("X.a = " + x.getX);
  Console.println("Y.a = " + y.getX);
  Console.println("Y.b = " + y.getY);
  Console.println("Y.b = " + y.y);
  Console.println;
}
//############################################################################
{
class X() {
  def foo = {
    Console.println("X::foo");
  }
}
class Y() extends X() {
  override def foo = {
    Console.println("Y::foo");
    super.foo;
  }
}
val x: X = new X();
val y: X = new Y();
x.foo;
Console.println;
y.foo;
Console.println;
}
//############################################################################
{
class X() {}
class O(a: Int) {
  case class Y(b: Int) extends X() {
    override def toString() = "";
    def bar = a + b;
  }
  def foo = Y(2).bar
}
Console.println(new O(1).foo)
}
{
class O(a: Int) {
  class X() {}
  case class Y(b: Int) extends X() {
    override def toString() = "";
    def bar = a + b;
  }
  def foo = Y(2).bar
}
Console.println(new O(1).foo)
}
Console.println;
  case class Bar();
  case class Foo(i: Int, j: Char, c: Bar) ;
  Console.println(
    true // Foo(3,'a',Bar()).caseElement( -1 ) == null // throws Exception now
    && Foo(3,'a',Bar()).productElement( 0 ) == 3
    && Foo(3,'a',Bar()).productElement( 1 ) == 'a'
    && Foo(3,'a',Bar()).productElement( 2 ) == Bar()
    && true // Foo(3,'a',Bar()).caseElement( 3 ) == null // throws Exception now
    && Bar().productArity == 0
    && Foo(3,'a',Bar()).productArity == 3);
//############################################################################
  def main(args: Array[String]) {
  }
//############################################################################
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala misc.scala source code file:  | 
| ... this post is sponsored by my books ... | |
         
           #1 New Release!  | 
      
         
           FP Best Seller  | 
  
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse 
URI on this website is
paid back to open source projects.