Advertisement
mvujas

Scala fundamentals

Apr 28th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.86 KB | None | 0 0
  1. import scala.math._ // sqrt je ovde
  2.  
  3. object ScalaIsAwesome {
  4.     def main(args: Array[String]) {
  5.    
  6.         // Primeri kako se moze suma liste naci
  7.         def F1(A: List[Int], f: Int => Int) : Int = {
  8.             var res = 0
  9.             for(i <- A)
  10.                 res += f(i)
  11.             res
  12.         }
  13.         def F2(A: List[Int]) : Int = A match {
  14.             case Nil => 0
  15.             case h :: t => h + F2(t)
  16.         }
  17.         val L = List(1, 6, 8)
  18.         println(F1(L, x => x)) // Nacin 1
  19.         println(F2(L)) // Nacin 2
  20.        
  21.         println((0 /: L) (_ + _)) // fold left
  22.         println((1 /: L) (_ * _)) // proizvod liste
  23.        
  24.        
  25.         println(L.exists(_ > 5)) // Proverava da li postoji broj veci od 5 u listi
  26.         println(L.forall(_ > 5)) // Proverava da li su svi brojevi u listi veci od 5
  27.          
  28.         println(L.take(2)) // Prva 2 elementa
  29.         println(L.drop(2)) // Lista bez prva 2 elementa
  30.         println(L.first) // Vraca prvog
  31.         println(L.last) // Vraca poslednjeg
  32.         println(L.init) // Vraca sve bez poslednjeg
  33.         println(L.length) // Vraca duzinu liste
  34.        
  35.         println(L.partition(_ > 5)) // Deli listu na 2, u jednoj su brojevi manji od 5, u drugoj veci od 5
  36.        
  37.         // Duzina niza sa funkcijom F1
  38.         println(F1(L, x => 1))
  39.         println(F1(L, _ => 1)) // Moze i ovako, jer je vrednost x-a nebitna, obratiti da se _ moze koristiti i u anonimnim funkcijama radi kraceg pisanja, pogledati naredni primer
  40.        
  41.         val S = List[String]("123", "1", "1048", "-104")
  42.         // naredna 2 su identicna
  43.         println(S.map(x => x.toInt))
  44.         println(S.map(_.toInt))
  45.        
  46.         // metode se mogu i kombinovati, ovo vraca sve pozitivne brojeve kada se lista stringova S pretvori u listu integera
  47.         println(S.map(_.toInt).filter(_ >= 0))        
  48.        
  49.         // Inverzija niza
  50.         def inv(A: List[Int]): List[Int] = A match {
  51.             case Nil => Nil
  52.             case h :: t => inv(t) :+ h
  53.         }
  54.         println(inv(L))
  55.        
  56.         class Krug(var x: Double, var y: Double, var r: Double) {
  57.             this.x = x
  58.             this.y = y
  59.             this.r = r
  60.             val pi = 3.14
  61.            
  62.             def Povrsina() = r * r * pi
  63.             def Obim() = 2 * r * pi
  64.             override def toString() = "Krug sa centrom (%.2f, %.2f) i poluprecnikom %.2f ima povrsinu %.2f i obim %.2f".format(this.x, this.y, this.r, this.Povrsina, this.Obim)
  65.             def pripada(x: Double, y: Double) = sqrt((x - this.x) * (x - this.x) + (y - this.y) * (y - this.y)) <= r
  66.         }
  67.        
  68.         val K = new Krug(0, 0, 5)
  69.         println(K)
  70.         val TX: Double = 5
  71.         val TY: Double = 0.1
  72.         println("Tacka (%.2f, %.2f) %spripada krugu K.".format(TX, TY, if(K.pripada(TX, TY)) "" else "ne "))
  73.        
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement