1
+ class Employee (val firstName : String , val midName : Option [String ], val lastName : String ){
2
+ def this (firstName: String , midName: String , lastName: String ) =
3
+ this (firstName, Some (midName), lastName)
4
+
5
+ def this (firstName: String , lastName: String ) =
6
+ this (firstName, None , lastName)
7
+
8
+ def this () =
9
+ this (" Unknown" , " Unknown" )
10
+ }
11
+
12
+ object Options extends App
13
+ {
14
+ val midName = Some (" Shahaji" )
15
+ val midName2 : Option [String ] = midName
16
+ val midName3 : Some [String ] = midName
17
+
18
+ val noMidName = None
19
+ val noMidName2 : Option [String ] = noMidName
20
+ val noMidName3 : Option [Nothing ] = noMidName
21
+ val noMidName4 : None .type = noMidName
22
+
23
+ val shivaji = new Employee (" Shivaji" , midName, " Bhosale" )
24
+ val charlie = new Employee (" Charlie" , " Chaplin" )
25
+ val stranger = new Employee ()
26
+
27
+ println(midName.getOrElse(" No Middle Name" ))
28
+ println(noMidName.getOrElse(" No Middle Name" ))
29
+ println(" Shivaji Middle Name:" + shivaji.midName.getOrElse(" No Middle Name" ))
30
+ println(" Charlie Middle Name:" + charlie.midName.getOrElse(" No Middle Name" ))
31
+ println(" Stranger Middle Name:" + stranger.midName.getOrElse(" No Middle Name" ))
32
+
33
+ def getMiddleName (x: Option [String ]): String =
34
+ {
35
+ x match
36
+ {
37
+ case Some (name) => name
38
+ case None => " No Middle Name"
39
+ }
40
+ }
41
+
42
+ println(" Shivaji Middle Name using function:" + getMiddleName(shivaji.midName))
43
+ println(" Shivaji Middle Name using function:" + getMiddleName(charlie.midName))
44
+ println(" Shivaji Middle Name using function:" + (stranger.midName))
45
+ }
46
+
47
+ /**
48
+ Sample Output
49
+
50
+ > scalac Options.scala
51
+
52
+ > scala Options
53
+ Shahaji
54
+ No Middle Name
55
+ Shivaji Middle Name:Shahaji
56
+ Charlie Middle Name:No Middle Name
57
+ Stranger Middle Name:No Middle Name
58
+ Shivaji Middle Name using function:Shahaji
59
+ Shivaji Middle Name using function:No Middle Name
60
+ Shivaji Middle Name using function:None
61
+
62
+ **/
0 commit comments