Я ищу, чтобы понять ошибки времени компиляции, сгенерированные с помощью следующего кода Scala:Scala: Вперед ссылки ошибки во время типа шаблону
class MyClass {
def determineType(x:Any):String = {
x match {
case Int => "It's an int."
case Float => "It's a Float."
case CIn => "It's a CIn without a specifier."
case c:CIn => "It's a CIn with a specifier."
case DIn=> "It's a DIn without a specifier." // Error:Cannot resolve symbol DIn
case d:DIn=> "It's a DIn with a specifier."
case _ => "It's something else."
}
}
case class CIn()
class DIn
} // End class definition
def determineType(x:Any):String = {
x match {
case Int => "It's an int"
case Float => "It's a Float"
case COut => "It's a COut without a specifier." // Error: Wrong forward reference
case c:COut => "It's a COut with a specifier."
case DOut=> "It's a DOut without a specifier." // Error: Cannot resolve symbol DOut.
case d:DOut=> "It's a DOut with a specifier."
case _ => "It's something else."
}
}
case class COut()
class DOut()
В версии determineType
в MyClass
, как case class
CIn
, как а регулярные class DIn
определены и объявлены после determineType
. При попытке сопоставления с DIn
возникает ошибка разрешения символа без переменной спецификатора.
В области сценария мы также определяем case class
Cout
и обычный class
DOut
. В версии сценария determineType
мы имеем две разные ошибки. Первый генерируется при обращении к типу case class
(Cout
) без спецификатора, и он читает «Неправильное прямое обращение». Вторая генерируется при обращении к регулярному class
(DOut
) без спецификатора, и это ошибка разрешения символа.
Я новичок в языке и поэтому не уверен, почему включение спецификаторов в операторы case
влияет на способ обработки обратных ссылок.
Удивительный ответ, спасибо. В вашем последнем комментарии я фактически отредактировал сообщение, чтобы включить ключевое слово «match».Поскольку на вышеупомянутых строках IntelliJ появились ошибки времени компиляции, я даже не запускал сценарий, чтобы он жаловался на недостающее ключевое слово, и сосредоточился на тех, которые появляются. – Jason