مقدمات سکالا 10- Either

scala
tutorial

#1

در قسمت ۹ از تایپ ساز Option برای داده های اختیاری حرف زدیم با مثال پایین

def divide(numerator: Double, denominator: Double): Option[Double] {
  if(denominator == 0) {
    None
  } else {
    Some(numerator / denominator)
  }
}

در حالی که مثال یک تابع کامل هستش total function اما Option بیشتر برای نشان دادن داده اختیاری بکار میره تا کار کردن با خطا
برای نشان دادن خطا در سکالا یک تایپ سازنده به نام Either وجود داره

sealed trait Either[Left, Right]

این تایپ قسمت خطا رو در Left و قسمت درست را در راست Right تعریف میکنه اگر تابع به صورت زیر باشه

def work: Either[String, User]

در صورت درستی

Right(User)

برمیگردونه و در صورت خطا

Left(String)

به روز رسانی مثال اول

case class Error(reason: String)

def divide(numerator: Double, denominator: Double): Either[Error,Double] {
  if(denominator == 0) {
    Left(Error("Can't divide by zero"))
  } else {
    Right(numerator / denominator)
  }
}

حالا این خطا در تایپ آشکاره


مقدمات سکالا