This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| language:scala [2020/09/09 13:51] – [Identifier] 잘못된 참조 수정 ledyx | language:scala [2021/03/24 08:18] (current) – [Command Line] 프로젝트 생성/배포 내용 보강 ledyx | ||
|---|---|---|---|
| Line 13: | Line 13: | ||
| https:// | https:// | ||
| - | * SBT (Scala Build Tools) | + | === SBT (Scala Build Tools) |
| Scala의 Ant/ | Scala의 Ant/ | ||
| + | |||
| + | ==== Create templates ==== | ||
| + | |||
| + | https:// | ||
| <sxh shell> | <sxh shell> | ||
| - | # 생성 | + | sbt new scala/ |
| - | sbt [Project Name] | + | </ |
| + | |||
| + | ==== Fat Jar ==== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | <sxh shell> | ||
| # Build (Fat Jar 생성) | # Build (Fat Jar 생성) | ||
| ## build.sbt에 | ## build.sbt에 | ||
| - | ## addSbtPlugin(" | + | ## addSbtPlugin(" |
| ## 추가 필요 | ## 추가 필요 | ||
| ### 생성된 jar 위치 : target/ | ### 생성된 jar 위치 : target/ | ||
| - | sbt assemblyty | + | sbt assembly |
| </ | </ | ||
| - | * Scala Binaries (선택 사항) | + | |
| + | === Scala Binaries (선택 사항) | ||
| * REPL(scala), | * REPL(scala), | ||
| Line 434: | Line 445: | ||
| ==== for-yield ==== | ==== for-yield ==== | ||
| - | < | + | < |
| <code scala> | <code scala> | ||
| Line 985: | Line 996: | ||
| ==== Companion object ==== | ==== Companion object ==== | ||
| - | 어떤 class **이름**이 같은 object. 그 피대상인 class는 " | + | 어떤 class **이름**이 같은 object. 그 피대상인 class는 " |
| 이 때, object의 field들이 " | 이 때, object의 field들이 " | ||
| Line 1308: | Line 1319: | ||
| val f3: C => C = (c: CSuper) => new C | val f3: C => C = (c: CSuper) => new C | ||
| val f4: C => C = (c: C) => new CSub | val f4: C => C = (c: C) => new CSub | ||
| - | val f5: C => C = (c: CSub) => new CSuper | + | |
| + | // Error! | ||
| + | /** 인자로 C를 받도록 타입을 정의했는데, | ||
| + | | ||
| + | */ | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| Line 1316: | Line 1332: | ||
| = Abstract types = | = Abstract types = | ||
| - | <sxh scala ; highlight: | + | https:// |
| + | |||
| + | <sxh scala ; highlight: | ||
| import java.io._ | import java.io._ | ||
| import scala.io.Source | import scala.io.Source | ||
| Line 1323: | Line 1341: | ||
| // 위 소스를 응용한 예제 | // 위 소스를 응용한 예제 | ||
| abstract class BulkReader { | abstract class BulkReader { | ||
| - | type In // 구체적인 타입을 지정하지 않음. | + | type In // 구체적인 타입을 지정하지 않음. |
| val source: In // 바로 위에서 지정한 Type인 " | val source: In // 바로 위에서 지정한 Type인 " | ||
| def read: String | def read: String | ||
| } | } | ||
| - | class StringBulkReader(val source: String) extends BulkReader { | + | class StringBulkReader |
| - | type In = String | + | (val source: String) |
| + | | ||
| + | type In = String | ||
| override def read: String = source | override def read: String = source | ||
| } | } | ||
| - | class FileBulkReader(val source: File) extends BulkReader { | + | class FileBulkReader |
| - | type In = File | + | (val source: File) // 추상 타입의 실질 타입 정의 |
| + | | ||
| + | type In = File // 추상 타입 구체화 | ||
| override def read: String = { | override def read: String = { | ||
| val source1 = Source.fromFile(source) | val source1 = Source.fromFile(source) | ||