Skip to content

Commit

Permalink
add Generic1
Browse files Browse the repository at this point in the history
  • Loading branch information
yennanliu committed Oct 3, 2021
1 parent 17d9c53 commit 1ba5185
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,7 @@
- [GenericTypeParam](./src/main/scala/ScalaBasic/GenericTypeParam.scala) - Scala `Generic Type` basic op, properties, e.g. : ``` def exec[T](f: () => T): T = {f()}```
- [GeneralClass1](./src/main/scala/ScalaBasic/GeneralClass1.scala)
- [GeneralClass2](./src/main/scala/ScalaBasic/GeneralClass2.scala)
- [Generic1](./src/main/scala/ScalaAdvance/Generic1)
- Scala has `Generic` in `class, func, method`
- [generic classes](https://docs.scala-lang.org/tour/generic-classes.html)
- `Generic classes` are classes which take a type as a parameter. They are particularly useful for collection classes.
Expand Down
20 changes: 20 additions & 0 deletions src/main/scala/ScalaAdvance/Generic1/demo1.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package ScalaAdvance.Generic1

// https://www.bilibili.com/video/BV12N411R726?p=272

object demo1 extends App {
// run
val int_msg = new IntMessage[Int](10)
println("int_msg = " + int_msg)

val str_msg = new StrMessage[String]("hola")
println("str_msg = " + str_msg)
}

abstract class Message[T](s:T){
// method
def get() = s
}

class IntMessage[Int](v:Int) extends Message(v)
class StrMessage[String](v:String) extends Message(v)
25 changes: 25 additions & 0 deletions src/main/scala/ScalaAdvance/Generic1/demo2.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ScalaAdvance.Generic1

// https://www.bilibili.com/video/BV12N411R726?p=272

import ScalaAdvance.Generic1.SeasonEnum

object demo2 {
def main(args: Array[String]): Unit = {
// run
// TODO : fix below
//val class01 = new EnglishClass[SeasonEnum, String, String](SeasonEnum.spring, "0001","intro")

//val class02 = new EnglishClass[SeasonEnum, String, String](SeasonEnum.summer, "002","advanced")
}
}

// val classSeason:A -> will make the input arg as READ ONLY arg
class EnglishClass[A,B,C](val classSeason:A, val className:B, val classType:C)

// season is an enumerate class
// https://github.com/yennanliu/utility_Scala/blob/master/src/main/scala/ScalaBasic/EnumerationDemo.scala
class SeasonEnum extends Enumeration {
type seasonEnum = Value
val spring, autumn, summer, winter = Value
}

0 comments on commit 1ba5185

Please sign in to comment.