progs/lecture1.scala
changeset 356 d1046d9d3213
parent 353 bb6074814a73
child 359 8aaf187d25f0
equal deleted inserted replaced
355:bc3980949af2 356:d1046d9d3213
    39 //=============
    39 //=============
    40 
    40 
    41 List(1,2,3,1)
    41 List(1,2,3,1)
    42 Set(1,2,3,1)
    42 Set(1,2,3,1)
    43 
    43 
       
    44 // picking an element in a list
       
    45 val lst = List(1, 2, 3, 1)
       
    46 
       
    47 lst(0)
       
    48 lst(2)
       
    49 
       
    50 // head and tail
       
    51 lst.head
       
    52 lst.tail
       
    53 
       
    54 // some alterative syntax for lists
       
    55 
       
    56 Nil     // empty list
       
    57 
       
    58 1 :: 2 :: 3 :: Nil
       
    59 List(1, 2, 3) ::: List(4, 5, 6)
       
    60 
       
    61 // also
       
    62 List(1, 2, 3) ++ List(3, 6, 5)
       
    63 Set(1, 2, 3) ++ Set(3, 6, 5)
       
    64 
    44 // ranges
    65 // ranges
    45 1 to 10
    66 1 to 10
    46 (1 to 10).toList
    67 (1 to 10).toList
    47 (1 to 10).toList.toString
    68 (1 to 10).toList.toString
    48 
    69 
    49 (1 until 10).toList
    70 (1 until 10).toList
    50 
    71 
    51 // picking an element in a list
       
    52 val lst = List(1, 2, 3, 1)
       
    53 lst(0)
       
    54 lst(2)
       
    55 
       
    56 // some alterative syntax for lists
       
    57 
       
    58 1 :: 2 :: 3 :: Nil
       
    59 List(1, 2, 3) ::: List(4, 5, 6)
       
    60 
       
    61 // also
       
    62 List(1, 2, 3) ++ List(4, 5, 6)
       
    63 
       
    64 
    72 
    65 // Equality in Scala is structural
    73 // Equality in Scala is structural
    66 //=================================
    74 //=================================
    67 val a = "Dave"
    75 val a = "Dave2"
    68 val b = "Dave"
    76 val b = "Dave"
    69 
    77 
    70 if (a == b) println("Equal") else println("Unequal")
    78 if (a == b) println("Equal") else println("Unequal")
    71 
    79 
    72 Set(1,2,3) == Set(3,1,2)
    80 Set(1,2,3) == Set(3,1,2)
   111 
   119 
   112 List(1,2,3,1).toString
   120 List(1,2,3,1).toString
   113 List(1,2,3,1).toSet
   121 List(1,2,3,1).toSet
   114 
   122 
   115 "hello".toList
   123 "hello".toList
   116 "hello".toList.tail
   124 "hello".toSet
   117 
   125 
   118 
   126 
   119 1.toDouble
   127 1.toDouble
   120 
   128 
   121 1L  // a long
   129 1   // an Int
   122 1F  // a float
   130 1L  // a Long
   123 
   131 1F  // a Float
   124 // useful list methods
   132 1D  // a Double
       
   133 
       
   134 // useful list methods on lists
       
   135 //==============================
   125 
   136 
   126 List(1,2,3,4).length
   137 List(1,2,3,4).length
   127 List(1,2,3,4).reverse
   138 List(1,2,3,4).reverse
   128 List(1,2,3,4).max
   139 List(1,2,3,4).max
   129 List(1,2,3,4).min
   140 List(1,2,3,4).min
   162 
   173 
   163 */
   174 */
   164 
   175 
   165 
   176 
   166 // you can make the type of a value explicit
   177 // you can make the type of a value explicit
   167 val name: String = "leo"
   178 val name = "bob"
   168 
   179 
   169 
   180 
   170 // type errors
   181 // type errors
   171 math.sqrt("64".toDouble)
   182 math.sqrt("64".toDouble)
   172 
   183 
   193 
   204 
   194 
   205 
   195 // Function Definitions
   206 // Function Definitions
   196 //======================
   207 //======================
   197 
   208 
   198 def foo(s: String) : String = {
       
   199   val tmp = s ++ s ++ s
       
   200   val res = s ++ s
       
   201   res
       
   202 }
       
   203 
       
   204 
       
   205 foo("test")
       
   206 
   209 
   207 def incr(x: Int) : Int = x + 1
   210 def incr(x: Int) : Int = x + 1
   208 def double(x: Int) : Int = x + x
   211 def double(x: Int) : Int = x + x
   209 def square(x: Int) : Int = x * x
   212 def square(x: Int) : Int = x * x
   210 
   213 
   211 def str(x: Int) : String = x.toString
   214 def str(x: Int) : String = x.toString
       
   215 
   212 
   216 
   213 incr(3)
   217 incr(3)
   214 double(4)
   218 double(4)
   215 square(6)
   219 square(6)
   216 str(3)
   220 str(3)
   221 //
   225 //
   222 //  def fname(arg1: ty1, arg2: ty2,..., argn: tyn): rty = {
   226 //  def fname(arg1: ty1, arg2: ty2,..., argn: tyn): rty = {
   223 //    
   227 //    
   224 //  }
   228 //  }
   225 
   229 
   226 
       
   227 // BTW: no returns!!
       
   228 // "last" line (expression) in a function determines the 
       
   229 // result
       
   230 
       
   231 
       
   232 def silly(n: Int) : Int = {
       
   233   if (n < 10) n * n
       
   234   else n + n
       
   235 }
       
   236 
   230 
   237 
   231 
   238 // If-Conditionals
   232 // If-Conditionals
   239 //=================
   233 //=================
   240 
   234 
   278 def power(x: Int, n: Int) : Int =
   272 def power(x: Int, n: Int) : Int =
   279   if (n == 0) 1 else x * power(x, n - 1) 
   273   if (n == 0) 1 else x * power(x, n - 1) 
   280 
   274 
   281 power(5, 5)
   275 power(5, 5)
   282 
   276 
       
   277 // BTW: no returns!!
       
   278 // "last" line (expression) in a function determines the 
       
   279 // result
   283 
   280 
   284 
   281 
   285 // For-Comprehensions (not For-Loops)
   282 // For-Comprehensions (not For-Loops)
   286 //====================================
   283 //====================================
   287 
   284