Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture"...
Transcript of Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture"...
![Page 1: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/1.jpg)
Scala Basics
![Page 2: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/2.jpg)
Lecture Question• In a package named "lecture" create an object named "FirstObject"
with a method named "computeShippingCost" that takes a Double representing the weight of a package as a parameter and returns a Double representing the shipping cost of the package
• The shipping cost is ($)5 + 0.25 for each pound over 30
• Every package weighing 30 pounds or less will cost 5 to ship
• A package weighing 31 pounds cost 5.25 to ship
• A package weighing 40 pounds cost 7.50 to ship
• Submit a zip file of your project to AutoLab: File > Export to zip file
![Page 3: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/3.jpg)
Hello World
![Page 4: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/4.jpg)
Scala Basics
Project setup
Create new IDEA Scala project in IntelliJ
![Page 5: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/5.jpg)
Scala Basics
A first example in Scala
Prints "Hello Scala!" to the screen
package week1.basics
object Hello {
def main(args: Array[String]): Unit = { println("Hello Scala!") } }
![Page 6: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/6.jpg)
Scala Basics
Package declaration
Should match the directory structure in the src directory
This file is saved in the directory "src/week1/basics"
To create a package, right click the src directory > new > package
package week1.basics
object Hello {
def main(args: Array[String]): Unit = { println("Hello Scala!") } }
![Page 7: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/7.jpg)
Scala Basics
Objects
Objects can store variables and functions*
Name should match the filename
This code is in the file "src/week1/basics/Hello.scala"
*We call them methods when they are part of an object
package week1.basics
object Hello {
def main(args: Array[String]): Unit = { println("Hello Scala!") } }
![Page 8: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/8.jpg)
Scala Basics
Main Method
The method that executes when you run your object/program
Will always have the header "def main(args: Array[String]): Unit"
package week1.basics
object Hello {
def main(args: Array[String]): Unit = { println("Hello Scala!") } }
![Page 9: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/9.jpg)
Scala Basics
Print Line
Prints "Hello Scala!" to the screen
package week1.basics
object Hello {
def main(args: Array[String]): Unit = { println("Hello Scala!") } }
![Page 10: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/10.jpg)
Methods Variables
![Page 11: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/11.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Prints 14.0 to the screen
![Page 12: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/12.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Methods
Must declare types!
This method takes a Double as a parameter and returns a Double
![Page 13: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/13.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Methods
Must explicitly define the type of each parameter
Parameter name and type are separated by a colon :
![Page 14: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/14.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Methods
The return type must also be explicit
Return type follows the parameter list
Parameter list and return type are separated by a colon :
![Page 15: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/15.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Methods
The body of the method is executed when the method is called
Return statements are optional (And discouraged)
The returned value is the last expression that's evaluated during the method call
![Page 16: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/16.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Variables
Type declaration optional, but helpful
Creates a mutable* variable named x of type Double and initializes it to the value 7.0
*Value can change
![Page 17: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/17.jpg)
package week1.basics
object FirstObject {
def multiplyByTwo(input: Double): Double = { input * 2.0 }
def main(args: Array[String]): Unit = { var x: Double = 7.0 var result = multiplyByTwo(x) println(result) }
}
Variables
Variable declaration without a type
Type is inferred by the return type of the method
![Page 18: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/18.jpg)
Conditionals
![Page 19: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/19.jpg)
package week1.basics
object Conditional {
def computeSize(input: Double): String = { val large: Double = 60.0 val medium: Double = 30.0 if (input >= large) { "large" } else if (input >= medium) { "medium" } else { "small" } }
def main(args: Array[String]): Unit = { println(computeSize(70.0)) println(computeSize(50.0)) println(computeSize(10.0)) }
}
Prints: largemediumsmall
![Page 20: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/20.jpg)
package week1.basics
object Conditional {
def computeSize(input: Double): String = { val large: Double = 60.0 val medium: Double = 30.0 if (input >= large) { "large" } else if (input >= medium) { "medium" } else { "small" } }
def main(args: Array[String]): Unit = { println(computeSize(70.0)) println(computeSize(50.0)) println(computeSize(10.0)) }
}
Values declared with val cannot change
Reassignment causes an error
![Page 21: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/21.jpg)
package week1.basics
object Conditional {
def computeSize(input: Double): String = { val large: Double = 60.0 val medium: Double = 30.0 if (input >= large) { "large" } else if (input >= medium) { "medium" } else { "small" } }
def main(args: Array[String]): Unit = { println(computeSize(70.0)) println(computeSize(50.0)) println(computeSize(10.0)) }
}
Conditionals Similar to JavaScript syntax
![Page 22: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/22.jpg)
package week1.basics
object Conditional {
def computeSize(input: Double): String = { val large: Double = 60.0 val medium: Double = 30.0 if (input >= large) { "large" } else if (input >= medium) { "medium" } else { "small" } }
def main(args: Array[String]): Unit = { println(computeSize(70.0)) println(computeSize(50.0)) println(computeSize(10.0)) }
}
Conditionals and Methods The return value of this method is determined by the conditional
The conditional determines which expression evaluates last-Any code after the conditional would break this example
![Page 23: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/23.jpg)
Project Setup Demo
![Page 24: Intro 1 Scala Basics - University at Buffalo · Lecture Question • In a package named "lecture" create an object named "FirstObject" with a method named "computeShippingCost" that](https://reader034.fdocuments.in/reader034/viewer/2022043017/5f398dbeff9124750a312023/html5/thumbnails/24.jpg)
Lecture Question• In a package named "lecture" create an object named "FirstObject"
with a method named "computeShippingCost" that takes a Double representing the weight of a package as a parameter and returns a Double representing the shipping cost of the package
• The shipping cost is ($)5 + 0.25 for each pound over 30
• Every package weighing 30 pounds or less will cost 5 to ship
• A package weighing 31 pounds cost 5.25 to ship
• A package weighing 40 pounds cost 7.50 to ship
• Submit a zip file of your project to AutoLab: File > Export to zip file