#dev ์—๋Ÿฌ ๋กœ๊ทธ ๊ฐœ์„  ๋ฒ„๊ทธํ”ฝ์Šค Option.get ํ•˜๋Š” ๋ถ€๋ถ„ pattern match ํ•˜๊ฒŒ ๋ณ€๊ฒฝ ๊ตฌ์‚ผ์ด ๋‚ด์ค€ ํ€ด์ฆˆ Option.get์€ ์„ธ ๊ฐ€์ง€๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค.

// ๋ฌธ์ œ : x๊ฐ€ None์ผ ๋•Œ 0, Some[String]์ผ ๋•Œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜์„ธ์š”.
// ์กฐ๊ฑด : ํŒจํ„ด๋งค์นญ / fold / Option map ์„ธ ๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ํ™œ์šฉํ•ด์•ผ ํ•จ

import scala.util.Random

val x: Option[String] = if (Random.nextBoolean()) Some(Random.nextString(Random.nextInt(1024))) else None

println(x)

val foldResult = x.fold[Int] {
     0
     } { stuff =>
     stuff.length
     }

val patternMatchResult = x match
	case None => 0
	case Some(value) => value.length

val mapOptionResult = x.map[Int](_.length) getOrElse 0

println(s"""
|patternMatch :$patternMatchResult
|fold: $foldResult
|mapOption: $mapOptionResult""")

๊ทธ๋ฆฌ๊ณ  wartremover์— ๋‚˜์™€ ์žˆ๋Š” ๊ฐ€์ด๋“œ๋Š” Option.get ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. None์ผ ๊ฒฝ์šฐ failํ•˜์—ฌ fiber๊ฐ€ ์ฃฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

#๋„๋ฉ”์ธ ๊ด€๋ จ ETF > ์ข…๋ชฉ์„ ์—ฌ๋Ÿฌ๊ฐœ ๋ฌถ์–ด์„œ ์ฃผ์‹์„ ๊ตฌ๋งคํ•˜๋Š” ๊ฒฝ์šฐ, (trbc id๊ฐ€)์‚ฐ์—…์ด null์ผ ์ˆ˜ ์žˆ์Œ.

#๋กœ๊ทธ

ZIO.logWarning(s"CompanyAnalyze#top10CompaniesInTheSameIndustry: No trbc Id for infocode $infocode")

์ฒ˜๋Ÿผ ๋ณ€๊ฒฝ์— ์ทจ์•ฝํ•œ ๋ฉ”์‹œ์ง€๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ. ๋˜ํ•œ ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๋กœ๊ทธ์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ ์ˆœํ™˜์ฐธ์กฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ.

#์Šฌ๋ž™ ๋งํฌ

  1. for (a <- as) yield aย ๋Š”ย aย ๋ž‘ ๊ฐ™์Šต๋‹ˆ๋‹ค.ย a.map(identity) === aย ์ธ๊ฑฐ๋ž‘ ๊ฐ™์€ ์›๋ฆฌ

  2. ์Šค์นผ๋ผ๋Š” ์ž๋ฐ”๋ณด๋‹ค ํƒ€์ž… ์ถ”๋ก ์„ ์ž˜ ํ•ด์ค˜์š”.ย Map[String, String](...)ย ์ฒ˜๋Ÿผ ํƒ€์ž…ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ช…์‹œํ•ด ์ฃผ๋Š”๊ฑด ๊ฐ„ํ˜น ์ปดํŒŒ์ผ ์‹คํŒจํ•˜๋ฉด ๊ทธ๋•Œ ํ•ด์ฃผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค.

  3. ๋ชจ๋“ˆ์˜ ๊ณต๊ฐœ API์— ํƒ€์ž… ๋ช…์‹œํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•˜๋Š” ๊ฑฐ๋ž‘ ๋‹ค๋ฅธ ์–˜๊ธฐ์—์š”.

  4. someZIO *> ZIO.succeed(x)ย ๋Š”ย [someZIO.as](http://somezio.as/)``(x)ย ๋กœ ์ค„์—ฌ ์“ฐ์‹ค ์ˆ˜ ์žˆ์–ด์š”.

  5. ZIO for IntelliJย ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜์‹œ๋ฉด ์ด๋Ÿฐ ๊ฒฝ์šฐ ๊ฐœ์„ ์•ˆ์„ ์ œ์•ˆํ•ด ์ค๋‹ˆ๋‹ค.

@sean๊ณผ ํŽ˜์–ดํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ #dev ํŒจํ„ด๋งค์นญ ์Šค์ฝ”ํ”„ ์™ธ๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ tuple ๋˜๋Š” map์„ ํ™œ์šฉํ•ด๋ณด๊ธฐ #๋„๋ฉ”์ธ delistdate๋Š” ์ƒ์žฅํ์ง€๋œ ๋‚ ์งœ. null์ด๋ฉด ์ƒ์žฅํ์ง€ ์•ˆ๋œ ๊ฒƒ์ž„ atlasian์— ์ž‘์„ฑํ•  ๋•Œ ๊ด€๋ จ context๋ฅผ ๋‹ด์•„์„œ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งํ•˜๊ธฐ ๊ฐœ๋ฐœ์ž ์™ธ ์‚ฌ๋žŒ๋“ค๋„ ์žˆ์œผ๋‹ˆ ์ตœ๋Œ€ํ•œ ์ฝ”๋“œ ์ •๋ณด๋ณด๋‹จ ์„œ๋น„์Šค ์‹คํ–‰์˜ ๋งฅ๋ฝ์—์„œ ๋งํ•˜๊ธฐ

์ฃผ์˜ํ•  ์ 

  • ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๊ณ  ์ž˜ ๋˜์—ˆ๋Š”์ง€ ์ •์ƒ๋™์ž‘ํ•˜๋Š”์ง€ ๊ผญ ํ™•์ธํ•˜๊ณ  ์ปค๋ฐ‹ํ•˜๊ธฐ
  • ์ปค๋ฐ‹์„ ํ•˜๊ณ  ๋ฐ”๋กœ pushํ•˜์ง€ ์•Š๊ณ  ๊ผญ ์…€ํ”„๋ฆฌ๋ทฐ๋ฅผ ํ•œ ์ดํ›„ pushํ•˜๊ธฐ

๊ณ ๋ฏผํ•  ์ 

  • ๋” ๋‚˜์€ ์—๋Ÿฌ/๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋Š” ๋ฌด์—‡์ธ์ง€?
  • ์—๋Ÿฌ์™€ ๋กœ๊ทธ์˜ ๋ ˆ๋ฒจ์€ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„๋˜๋Š” ๊ฒƒ์ธ์ง€?

์ข‹์•˜๋˜ ์  sean์ด ๊ฐ€๋ฅด์ณ์ค€ ๋‚ด์šฉ์„ ์žŠ์ง€ ์•Š๊ฒŒ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์•Œ๋ ค์คŒ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ง€์†์ ์œผ๋กœ revokeํ•จ

๊ฐœ์„ ํ•  ์ 

  • ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด์„œ ์ฝ”๋”ฉํ•˜๊ธฐ
  • ๋ฌด์—‡์„ ํ•˜๊ณ  ์‹ถ์€์ง€๋„ ํ™•์ธํ•˜๋ฉด์„œ ์ฝ”๋”ฉํ•˜๊ธฐ